指针
1. 指针所占内存空间
在32位操作系统下,占用4个字节,64位下占8个字节
2. 空指针与野指针
空指针:指针变量指向内存中编号为0的空间
用途:初始化指针变量
注意:空指针指向的内存量是不可以访问的
0~255之间的内存编号是系统占用的,因此不可以访问
int *p = NULL; cout << *p << endl; //访问会报错
野指针:指针变量指向非法的内存空间
int *p = (int *)0x1100;
空指针与野指针都不是我们申请的空间,因此不要访问
3. const修饰指针
const修饰指针有三种情况:
- const修饰指针——常量指针
- const修饰常量——指针常量
- const既修饰指针,又修饰常量
const修饰指针——常量指针
int a = 10; const int *p = &a;
特点:指针的指向可以修改,但是指针指向的值不可以修改
*p = 20; //× int b = 20; p = &b; //√
const修饰常量——指针常量
int a = 10; int * const p = &a;
特点:指针的指向不可以改,指针指向的值可以改
*p = 20; //√ int b = 20; p = &b; //×
const既修饰指针,又修饰常量
int a = 10; const int * const p = &a;
特点:指针的指向和指针指向的值都不可以修改
*p = 20; //× int b = 20; p = &b; //×
4. 指针和数组
利用指针访问数组中的数据
int arr[3] = {1,2,3};
int *p = arr;
/* 此时*p==arr[0] */
//数组在内存中的空间是连续的,可以通过指针自加访问下一元素
p++;
/* 此时*p==arr[1] */