int const *p
const int *p
代表不能改变 指针指向的内容 ,但可以改变指针指向 //你可以换男朋友,但是不能花他的钱
此时const 均在 *p 左边
int *const p
可以改变指针指向的内容,但不能改变指针指向 //可以花男朋友的钱,但是不能换男朋友
此时const 在 * 右边
const int const *p
即不能改变指针的内容,也不能改变指针指向
2.指针数组和数组指针理解这两个概念,只需要看他们最后两个字,如指针数组就是一个数组,数组指针是指针。
int (*p) [ i ] 是数组指针
int *p[ i ] 是指针数组
区分他们很简单,在于是否有括号 () ,原因是 [ ] 的结合优先级高于 * ,如果没有 ( ) ,那么 p优先与 [ ] 结合为数组,所以为指针数组,反之有 ()时, * 优先与 p 结合为指针。
3.函数指针与指针函数函数指针:就是指向函数的指针
函数指针的类别取决于函数的类别
void(*pfun1)() = &fun;
若为int 函数
下面则为一个函数指针的定义
int (*pfun1)(int, int) = &fun2;
#include4.二级指针 指针变量也是变量,是变量就有地址,那指针变量的地址存放在哪里? 这就是 二级指针 。void fun() { printf("123n"); } int fun1(int a, int b) { return a + b; } int main() { int(*pfun)(int, int); // int *ptr pfun = fun1; // ptr = &a; pfun(1, 2); }
*ppa 通过对 ppa 中的地址进行解引用,这样找到的是 pa , *ppa 其实访问的就是 pa



