1、所占内存空间
指针所占内存空间根据操作系统的位数决定。32位操作系统,指针所占内存空间为4个字节;64位操作系统,指针所占内存空间位8位。
以32位操作系统为例,32位操作系统表示,每次处理的数据为32位。CPU在进行寻址操作的时候,内存地址也是32位,因此内存空间最多4G。指针就是为了寻址,它寻址的空间也最多是4g,因此其所占的内存空间也是32位。
2、空指针
指针指向地址为0的内存
0-255是系统预留空间,无法访问,因此无法对空指针进行读写
int * p = NULL;
3、野指针
野指针:指针变量指向非法的内存空间
int * p = (int *)0x1100;
4、const修饰指针
- const 修饰指针——常量指针
- 在指针前面加const: const int *p = &a(p可以变,*p不能变)
- 指针的指向可以修改,但是指针指向的值不可以修改,即p可以指向其他变量,但是被指向的变量值a的值不能修改。
- const修饰常量——指针常量
- int * const p = &a;(p不能变,*p可以变)
- 指针的指向不可以修改,但是指针指向的值可以修改。即p不能指向其他变量,但是被指向的变量值a可以修改
- const即修饰指针又修饰常量
- const int * const p = &a;(p不能变,*p不能变)
- 指针的指向和指针指向的值都不可以变