如何理解 一个变量的地址 中的“地址”?地址形式是什么样的

您好 我是C语言初学者 对于很多词 句 感觉都好抽象

变量明白 那变量的地址 是什么样的 能举个例子不 谢谢
p的值 是什么意思谢谢。。

C语言本身没有“地址”的概念。地址是语言实现中涉及到的内容。如果学过计算机组成原理或者汇编语言就会知道存储器中构造出一个连续的整数集合作为地址空间(通常不是物理地址空间, 生命行者2010 错误),而地址是其中的一个整数。一个地址标识一个存储器单元(可以存储一个字节),通过不同的地址就可以访问不同的存储器单元。
C语言中,变量是保存数值的一种对象。C语言的编译器把变量绑定到地址空间中,只要知道变量的(首)地址就可以标识这个变量。变量的对象语义要求变量的值能在程序运行期在存储器中的确定位置能够被找到,因此一个变量在确定的生存期中具有且只有一个地址。而变量的值在实现上则是指存储这个变量的一个或多个具有连续地址的存储器单元中存储的值(至于那个存储器单元存储哪个部分,涉及到字节序问题,和语言本身无关,初学者无需关心)。(seven_qj错误,C语言的变量可以储存在CPU的寄存器(和物理内存、虚拟内存被映射在同一个地址空间)中(定义寄存器变量时通过register存储类限定符修饰),而不一定是内存中。)
PS
1.在32位平台上,地址空间的大小是2^32字节,可以用一个32位整数表示。
2.C语言中的指针(变量)就是提供了指针运算规则、类型检查的一种特殊的整数变量。
3.C语言中单目运算符&作用于一个对象时,返回指向这个对象的指针。
4.举例:
int a = 1;/*定义了一个变量a。*/
int *ptr=&a;/*定义了一个指向int变量的指针ptr,它的值被初始化为表达式&a的值,也就是a的地址*/
/*如果ptr的值是0x12345678,那么就表示a的地址是0x12345678。通过p可以间接访问a所在的存储器单元,从而对a进行间接操作。*/
/*话说0xFFFFFFFF也太扯淡了点- -...*/

参考资料:原创

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-10-25
  内存地址这个概念
    打个比方:整个内存就相当于一个拥有很多房间的大楼,每个房间都有房间号,比如从 101、102、103 一直到 NNN,我们可以说这些房间号就是房间的地址。相对应的内存中的每个单元也都有自己的编号,比如从0x00、0x01、0x02 一直到 0xNN,我们同样可以说这些编号就是内存单元的地址。房间里可以住人,对应的内存单元里就可以“住进”变量了:假如一位名字叫 A 的人住在 101 房间,我们可以说 A 的住址就是 101,或者 101 就是 A 的住址;对应的,假如一个名为 x 的变量住在编号为 0x00 的这个内存单元中,那么我们可以说变量 x 的内存地址就是 0x00,或者 0x00就是变量 x 的地址。
  基本的内存单元是字节,英文单词为 Byte,我们所使用的 STC89C52 单片机共有 512 字节的 RAM,就是我们所谓的内存,但它分为内部 256 字节和外部 256 字节,我们仅以内部的 256 字节为例,很明显其地址的编号从 0 开始就是 0x00~0xFF。我们用 C 语言定义的各种变量就存在 0x00~0xFF 的地址范围内,而不同类型的变量会占用不同数量的内存单元,即字节,可以结合前面讲过的 C 语言变量类型深入理解
第2个回答  2010-06-01
变量的地址就是变量的编号,和每个大楼的房间号一样,房间号是地址,里面存放的是内容,也就是变量的值了,不知道这么解释你能理解不?建议你看下汇编,再学C的地址就简单了
第3个回答  2010-06-01
地址就是变量在内存中存放的位置。例如32位机上内存形式可以为:0xFFFFFFFF。
例如:
int a=1;
int *ptr=&a;
假设变量a的地址为0xFFFFFFFF,那么p的值就是FFFFFFFF。
第4个回答  推荐于2016-11-23
变量指的是数据
地址指的是此数据的物理位置

例:变量a的地址是“某柱面某扇区某磁道”本回答被提问者采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网