c语言地址到底是一个段还是一个点?比如int a,a的地址为0x1,这个1到底是什么?是表示内存里面地址的一个

2024-12-25 16:07:51
推荐回答(4个)
回答1:

c语言地址是一个点,或叫“偏移量”(offset) 。程序里,每个变量都有不同的偏移量。

操作系统把程序装入内存时,临时分配一个区域,内存里面的真地址等于 临时分配的值+“偏移量”。

程序运行时,到真地址里去读写数据(取数,存数)。数据在运算器和寄存器里加工。
地址相当于门牌号码,便于寻找数据。

回答2:

C语言里的地址表示一个点,一个点外加一个变量类型可以代表一块内存:从这个点开始,长度等同于这个变量类型的长度比如int是4个字节。

说简单点,比如你电脑里装了2个G的内存,这2个G的单位是字节(2GB),于是就给每个字节分配一个地址,第一个字节为0,最后一个字节为0x7FFFFFFF,中间怎么排自己脑内补完。

不过现代操作系统中地址没有那么简单,在windows下其实我上面说的那个是错(简化?)的。它有好几个概念的地址,之间互相转化,什么什么的,以后学了操作系统相关的知识以后会知道。初学者不用知道这么复杂,知道像我刚才说的那样的应该就够了。

回答3:

地址就是你家的门牌号,你们家的那条街比较长,就用4位数来表示,街比较短,就用2位数来表示。

所以你是32位的系统,0x1就是31个0,一个1。64位的系统,就是63个0,一个1。你学一门编程语言,就要有一定的思维方式,站在一定的抽象角度去学,等上手了,再关心底层的实现。

这些都是设计计算机的时候那些设计者的抽象,实际上根本没有地址这个东西,就是一些电路里的信号,高电平低电压什么的。

回答4:

我个人觉得是一个点 就像我们住的楼房的门牌号 内存被分成许多许多许多的小房间 每个小房间都有自己的门牌号 小房间可以认为是 字节 (不知道准不准确) 可以组合成大房间 比如 int类型 在某些 编译器中 是 4字节(例如 VC6.0 和 CodeBlocks-G++) 这个大房子的是由四个连续的小房子连起来的 于是 编译器规定(这也是我猜的) 把大房子的门牌号 定为 组成它的第一个小房子的门牌号
呵呵 楼主 我这是形象的描述哈~