在32位程序里,所有类型的指针的值都是一个32位整数,因为 32位程序里内存地址全都是32位长。
指针的类型
在32机器里,指针的容量就是4字节的。指针的类型实际上就是指针所指向的变量的类型。
为什么在声明指针的时候要声明出它所指向的变量的类型呢?
因为,例如: int * p(这里是声明一个指针);
在以后的程序中有可能要做 int a=* p(这里取值)的操作,所以* ,即取值操作就要知道p所指向的空间里存放的变量的类型,根据不同的类型,* 操作会读取不同长度的连续空间,例如:int 4字节;double 8字节。
指针所指的类型
当你通过指针来访问指针所指向的内存区时,指针所指向的类型决定了编译器将把那片内存区里的内容当做什么来看待。
指针是存储地址的变量,指针的值就地址,大多数系统都是以16进制无符号整数来表达地址的值,但又不能把指针变量看作整数类型,因为对于整数的处理,指针变量不一定都能满足。所以,指针变量本身是一种新的数据类型。而我们声明指针时候的类型是指,指针所指向地址里的数据的类型。