C语⾔中指针的⼤⼩(字节数)
前⾔
今天看到char * 这⼀类型数据的⼤⼩为4个字节时,有点懵,char数据类型明明只占⼀个字节,为什么其指针却占四个字节呢?
原因
⼤家⾸先应该明⽩⼀个最基础的问题:数据的地址和数据本⾝没有任何关系,⽐如说 int a=10,a这个变量值为10,但是其地址却是⼀个和计算机处理器位数密切相关的值,如果是32位系统,那么其地址就是由这32根总线组合的某⼀个32位⼆进制数字串,⼋位是⼀个字节,那么32位就是4个字节,相对应的,64位就是8个字节。
c语言指针实验总结因此,char *说到底只是⼀个地址的序号,⽆论是char *p,还是double *p,其字节数只和计算机的位数相关,和其数据类型默认所占⼤⼩⽆关。
实验如下:
64位状态下:
32位状态下: