c语言地址到底是一个段还是一个点?比如int a,a的地址为0x1,这个1到底是什么?是表示内存里面地址的一个
是表示内存里面地址的一个点吗?还是我们人为的一种标记?有什么含义?哎,头疼,想不明白。哪位大神能给我细说下。感激不尽。到底地址是什么?...
是表示内存里面地址的一个点吗?还是我们人为的一种标记?有什么含义?哎,头疼,想不明白。哪位大神能给我细说下。感激不尽。到底地址是什么?
展开
展开全部
C语言里的地址表示一个点,一个点外加一个变量类型可以代表一块内存:从这个点开始,长度等同于这个变量类型的长度比如int是4个字节。
说简单点,比如你电脑里装了2个G的内存,这2个G的单位是字节(2GB),于是就给每个字节分配一个地址,第一个字节为0,最后一个字节为0x7FFFFFFF,中间怎么排自己脑内补完。
不过现代操作系统中地址没有那么简单,在windows下其实我上面说的那个是错(简化?)的。它有好几个概念的地址,之间互相转化,什么什么的,以后学了操作系统相关的知识以后会知道。初学者不用知道这么复杂,知道像我刚才说的那样的应该就够了。
说简单点,比如你电脑里装了2个G的内存,这2个G的单位是字节(2GB),于是就给每个字节分配一个地址,第一个字节为0,最后一个字节为0x7FFFFFFF,中间怎么排自己脑内补完。
不过现代操作系统中地址没有那么简单,在windows下其实我上面说的那个是错(简化?)的。它有好几个概念的地址,之间互相转化,什么什么的,以后学了操作系统相关的知识以后会知道。初学者不用知道这么复杂,知道像我刚才说的那样的应该就够了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
地址就是你家的门牌号,你们家的那条街比较长,就用4位数来表示,街比较短,就用2位数来表示。
所以你是32位的系统,0x1就是31个0,一个1。64位的系统,就是63个0,一个1。你学一门编程语言,就要有一定的思维方式,站在一定的抽象角度去学,等上手了,再关心底层的实现。
这些都是设计计算机的时候那些设计者的抽象,实际上根本没有地址这个东西,就是一些电路里的信号,高电平低电压什么的。
所以你是32位的系统,0x1就是31个0,一个1。64位的系统,就是63个0,一个1。你学一门编程语言,就要有一定的思维方式,站在一定的抽象角度去学,等上手了,再关心底层的实现。
这些都是设计计算机的时候那些设计者的抽象,实际上根本没有地址这个东西,就是一些电路里的信号,高电平低电压什么的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我个人觉得是一个点 就像我们住的楼房的门牌号 内存被分成许多许多许多的小房间 每个小房间都有自己的门牌号 小房间可以认为是 字节 (不知道准不准确) 可以组合成大房间 比如 int类型 在某些 编译器中 是 4字节(例如 VC6.0 和 CodeBlocks-G++) 这个大房子的是由四个连续的小房子连起来的 于是 编译器规定(这也是我猜的) 把大房子的门牌号 定为 组成它的第一个小房子的门牌号
呵呵 楼主 我这是形象的描述哈~
呵呵 楼主 我这是形象的描述哈~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询