1.指针的概念
想要清楚的理解指针概念我们必须先弄清楚数据在内存中是怎样储存的,又怎样读取的。在电脑的内存区里每一个字节都有一个编号,这个编号就是地址。我们在程序中定义一个变量,对程序进行编译时,系统会根据数据的类型分配给这个变量一定长度的空间,如int型分配四个字节。那这四个字节的编号就是这个变量的地址。反过来说这个变量就储存在这个地址内。你可以理解为酒店里的房间号。
由于通过地址能找到这个变量,可以说地址指向这个变量。就像你住酒店时,你朋友可以通过房间号码找到你。这个地址我们形象化的把他称为指针。
总的来说一个变量的地址就称为该变量的指针。
理解了指针接下来我们来讨论一下我们常说的指针变量又是什么呢?
通过上文我们可以知道指针就是地址,如地址1000是变量 i 的指针。那么这个指针(地址)该怎样储存呢?C语言里定义一个变量专门用来存放一个变量的地址,那么该变量称为指针变量。即指针变量的值是地址(我们在交流中讲的指针通常是指针变量)。
#include
int main
{
int a= 10;//在内存中开辟一块空间
int *p = &a;//取出变量a的地址放入指针变量p中;
return 0;
}
2.指针变量的大小
在32位的计算机中,地址是32个0或者1组成二进制序列,那地址就得用4个字节的空间来存储,所以一个指针变量的大小就应该是4个字节。
在64位的计算机中,如果有64个地址线,那一个指针变量的大小是8个字节,才能放下一个地址。
总结,指针的大小在32位平台上是4个字节,在64位平台上是8个字节。