2 limit lmt limit_lmt 于 2016.02.06 15:41 提问

一个int型变量占用4字节,那他的二进制地址是多长?

一个存储单元的地址不是16位吗?我弄不懂啊~~~~求指教指教图片说明图片说明图片说明图片说明

4个回答

leilba
leilba   Rxr 2016.02.06 16:22
已采纳

比如说,你定义了一个变量a,int a;那么内存中会为你分配4个字节大小的空间来存放a,int变量占用4个字节指的就是存放这个变量的值的内存空间大小为4个字节。
而二进制地址的话指的是内存中会为a存一份指针,当你要使用a的时候,就会通过这个指针去找内存中a的值,假如把a比作房间的话,那么指针就是门牌号。而这个指针(其实里面存放的就是二进制地址)的长度的话是不定的,会和你的系统的位数相对应,一般来说如果你是32位的机器,那么就是32位,如果是16位的话那么就是16位。
你可以输出 sizeof(int *)的值来验证一下。
地址跟系统有关,但是基本数据类型占的大小是由C语言本身决定。

wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.02.06 16:07

变量的名字对应着存储单元的地址,变量内容对应着单元所存储的数据。在C语言中,每一个存储单元占一个字节,每一个字节对应一个地址,这个地址即为内存地址。定义int a;时,编译器分配4个字节内存,并命名该4个字节的空间名字为a(即变量名),当用到变量名a时,就是在使用那4个字节的内存空间.

rui888
rui888   Ds   Rxr 2016.02.06 16:22

http://blog.csdn.net/cqupt_chen/article/details/8056023
http://very1024.blog.51cto.com/3588520/1215674
https://www.quora.com/Why-it-is-that-1-Byte-is-equal-to-8-Bits

Historically, the byte was the number of bits used to encode a single character of text in a computer[1][2] and for this reason it is the smallest addressable unit of memory in many computer architectures. The size of the byte has historically been hardware dependent and no definitive standards existed that mandated the size. The de facto standard of eight bits is a convenient power of two permitting the values 0 through 255 for one byte

The C standard requires that the char integral data type is  capable of holding at least 256 different values, and is represented by  at least 8 bits (clause 5.2.4.2.1). Various implementations of C and  C++ reserve 8, 9, 16, 32, or 36 bits for the storage of a byte.[10][11] The actual number of bits in a particular implementation is documented as CHAR_BIT as implemented in the limits.h file.
91program
91program   Ds   Rxr 2016.02.06 18:10

地址,也就是指针,一般来说是 4 个字节。
无论这 4 个字节指向哪里?指向一个字节、两个字节,或者多个字节都是一样的。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!