问题描述
解决方案
比如说,你定义了一个变量a,int a;那么内存中会为你分配4个字节大小的空间来存放a,int变量占用4个字节指的就是存放这个变量的值的内存空间大小为4个字节。
而二进制地址的话指的是内存中会为a存一份指针,当你要使用a的时候,就会通过这个指针去找内存中a的值,假如把a比作房间的话,那么指针就是门牌号。而这个指针(其实里面存放的就是二进制地址)的长度的话是不定的,会和你的系统的位数相对应,一般来说如果你是32位的机器,那么就是32位,如果是16位的话那么就是16位。
你可以输出 sizeof(int *)的值来验证一下。
地址跟系统有关,但是基本数据类型占的大小是由C语言本身决定。
解决方案二:
变量的名字对应着存储单元的地址,变量内容对应着单元所存储的数据。在C语言中,每一个存储单元占一个字节,每一个字节对应一个地址,这个地址即为内存地址。定义int a;时,编译器分配4个字节内存,并命名该4个字节的空间名字为a(即变量名),当用到变量名a时,就是在使用那4个字节的内存空间.
解决方案三:
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.
解决方案四:
地址,也就是指针,一般来说是 4 个字节。
无论这 4 个字节指向哪里?指向一个字节、两个字节,或者多个字节都是一样的。
时间: 2024-09-19 08:54:05