取地址操作符&:int a;&a //取出a的地址
解引用操作符*:int *p = &a //取出a的地址并存储到指针变量p中
Int a = 10;
Int* p = &a;
这里p左边写的是int*,*是在说明p是指针变量,前面的int是在说明p指向的是整形(int)类型的对象
int a ;
int* p = &a;
*p = 0;
上面代码中*p就使用了解引用操作符,*p 的意思就是通过p中存放的地址,找到指向的空间,*p其实就是a变量了,所以*p=0,这个操作符是把a改成了0.
指针运算
1.指针+-整数
2.指针-指针:得到的是指针和指针之间的元素个数的绝对值,注意没有指针+指针
3.指针的关系运算
野指针:指针指向的位置是不可知的
野指针的成因:
1.指针未初始化
2.指针越界访问
3.指针指向的空间释放
指针分类
一级指针:char*p; int*p;
二级指针:char* *pp =&p; int** pp = &p; //存放一级指针地址
数组指针-----》指向的是数组
Int arr[5];
Int (*p)[5]=&arr;
函数指针----》指向的是函数
char* test(int n , char* s)
char* (*pf)(int , char*)=test; //pf是函数指针变量
数组
指针数组------》存放指针的数组
char*arr[5];
Int* arr[5];
函数指针数组
Char* (* pfArr[4])(int , char*);