目录
指针是什么?
指针有多大?
指针类型是什么?
野指针是什么?
指针运算
指针+-整数
指针-指针
指针的关系运算
指针与数组的关系
二级指针
指针是什么?
指针是变量,用来存放地址(存放在指针中的值都被当成地址处理)
指针有多大?
在32位机器上,地址用4个字节的空间存储,即指针变量大小为4个字节
在64位机器上,要8个字节
指针类型是什么?
type *
指针类型的意义:
- 决定了指针解引用操作时一次访问几个字节(访问内存的大小)
int * 指针解引用访问4个字节; char * 指针解引用访问一个字节
- 指针的类型决定了指针+-整数的时候的步长
int *+1 跳过4个字节;char *+1 跳过1个字节
野指针是什么?
指针指向的位置不可知:随机的,不正确的,没有明确限制的
int* p ; //没有初始化,里面放的是随机值 * p=20 ; //通过p中存放的随机值地址找到一个空间,这个空间不属于我们当前的程序,导致非法访问,p就是野指针
- 成因:
指针未初始化;指针越界访问;指针指向的空间释放
- 规避方法:
指针初始化;小心指针越界;指针所指向空间释放,即使置NULL;指针使用之前检查有效性
指针运算
指针+-整数
可以理解为:日期加减天数
指针-指针
得到的数字的绝对值是指针和指针之间元素的个数
指针的关系运算
允许指向数组元素的指针与指向数组最后一个元素后面的那个内存位置的指针比较,但是不允许与指向第一个元素之前的那个内存位置的指针进行比较
指针与数组的关系
数组:是一块连续的空间,放的是相同类型的元素,数组大小和元素类型、元素个数有关系
指针:是一个变量,用来存放地址,指针变量的大小是4(32bit)/8(64bit)个byte
int *arr[3]={&a,&b,&c};
二级指针
int main() { int a = 0; int *pa = &a; int **ppa = &pa;//ppa即为二级指针 return 0; }
多批评指教!



