C语言sizeof函数和指针变量所占字节数

时间:2023-01-11 21:00:59

一个指针变量到底占几个字节?

一些预备知识:

首先看一个c语言自带的函数sizeof:
sizeof(数据类型)
功能:返回值就是该数据类型所占的字节数

例子:
sizeof(int) = 4;
sizeof(char) = 1;
sizeof(double) = 8;
还可以写成sizeof(变量名),返回值是该变量所占的字节数

假设x变量在内存中有8个字节,
我们知道在内存中,内存单元编号(内存地址)
是以字节为单位进行划分的,那么x变量在内存中的8个字节,
每个字节对应一个内存单元编号,8个字节
就有8个内存单元编号,实际上就有8个地址,

在C语言中实际上他是以这8个字节的中的第一个字节对应的内存单元
编号为变量x的内存地址的。
但是这第一个字节对应的内存单元编号是由32个0(或1)构成的
所以存放这32个0(或1)对应的一个编号,按照8位一个字节,需要4个
字节

32个0或1的由来:
CPU和内存条之间有32根地址总线,每根地址总线2种状态,要么0要么1

总结:
一个指针变量不管它是指向整型(还是字符型或双精度型…)变量,指针变量本身只占4个字节。
一个变量的地址使用该变量的首字节的地址来表示。