C语言的指针是变量的一种类型。我们类比门牌号对指针进行理解。小区内的某栋楼内每个房间都有门牌号,门牌号可以帮助我们更方便的找到房间。那么类比门牌号,指针也是这样的,指针可以帮助我们找到变量在内存中的存储位置。拿32位的机器来说,32位机器的寻址空间就是2的32次方,2的32次方byte通过转化,可以转化为4GB,那么就可以作为2的32次方个地址,那么也就是可以处理4GB的内存。我们在C语言中初始化变量的时候,会向内存地址申请空间,我们利用C语言的关键字”sizeof“来查看一下我们创建的变量申请到的内存大小有多少。
我们拿上图中的例子来讲,我们创建的变量申请到4个空间,它的单位是字节(byte)。
如何获得指针(地址)
这时我们就需要利用到一个变量,它的名称是”指针变量“,我们已经初始化了变量a,我们这时候需要再创建一个变量,通过取地址操作获得a的地址。”&a“在C语言中就是取地址操作。*的意思是告诉计算机我们所定义的pa是指针。我们同时可以运用解操作。如”*pa=10“来改变变量的值。
这时候我们就获得了变量a的地址,这个地址是用16进制表示的。我们创建变量的时候申请到了4个字节的空间,它代表着四个地址中的第一个地址。*pa成为指针变量,指针变量的大小是32个bit(32位机器上)。在64位机器上是64个bit也就是8个字节。