在c语言中,变量名 地址 存储单元的内容 分别怎样储存?

例如: int a; a=5; 其中的a,5以及5的地址分别怎么存储?

我更想知道a是否储存了,怎样储存的?5不是被随机分配一地址,假如它被分配了两个字节为2001-2002,那么2001就会成为他的地址,那2001又怎样储存的?

 

定义int a;时,编译器分配4个字节内存,并命名该4个字节的空间名字为a(即变量名),当用到变量名a时,就是在使用那4个字节的内存空间. 5是一个常数,在程序编译时存放在代码的常量区存放着它的值(就是5),当执行a=5时,程序将5这个常量拷贝到a所在的4个字节空间中,就完成了赋值操作. ======================================= a是我们对那个整形变量的4个字节取的"名字", 是我们人为给的,实际上计算机并不存储a这个名字,只是我们编程时给那4个字节内存取个名字好用.实际上程序在编译时,所有的a都转换为了那个地址空间了.编译成机器代码后,没有a这个说法了.a这个名字只存在于我们编写的代码中. 5不是被随机分配的,而总是位于程序的数据段中,可能在不同的机器上在数据段中的位置可能不一致,它的地址其实不能以我们常用到的内存地址来理解,因为牵扯到一个叫"计算机寻址方式"的问题,所以写很多都解释不清楚,你自己找本汇编语言的书来学一下吧.........

在c语言中,变量名 地址 存储单元的内容 分别怎样储存?》上有1条评论

发表评论

邮箱地址不会被公开。 必填项已用*标注