最近学习到了指针这一块的内容,学习指针的时候 只有一个感受,头有点疼。
首先,说到指针,他就是一个地址,指向已经开辟好的一块空间,
int num = 10;
int *p = #
这里的P就是一个指针,指针是一个地址,这个地址有能力指向一个整形,还有比如 char*p,float *p, 因为指向的内容不同,访问的权限不同,所以指针也必须有类型来指向这些空间,这就是指针的类型。
上面的P为一个指针,也是一个一级指针,而他本身也是有地址的,既然他本身是有地址的,所以我们能用一个其他的指针来指向这个指针,而这就是二级指针的使用,
int num = 10;
int *p = # 这是一级指针,
int **pp = &p;这是一个二级指针;
二级指针就是专门用来存放一级指针地址的,同理 还有三级指针...
数组指针,
int arr[10] = {0};
int (*p)[10];这就是一个指针数组,因为首先和* 结合,所以首先它是一个指针,指向一个数组,数组有10个int类型的数据。
指针数组,
int *arr[10],因为[]的优先级高,所有首先这是一个数组,数组里面有10个int*类型的数据。
函数指针,
void(*p)(函数参数) = &test;一个指针,有能力指向一个函数,函数参数是(),返回类型是void。
函数指针数组,
int add(int x, int y);
int sub(int x, int y);
int mul(int x, int y);
int div(int x, int y);
int (*parr[4])(int , int) = {add, sub, mul, div};