一、常量指针、指针常量
int a;
int * const p = &a //指针常量,*p可以修改*p = 8;(OK)
p不可以修改 p++(ERROR)
int a,b;
const int *p = &a;//常量指针 *p不可修改 *p = 8;(ERROR)
p 可以修改 p = &b (OK)
还有一种
const int * const p = &a; // *p 和 p均不可改变了
二、指针函数、函数指针
1、指针函数:指带有指针的函数
如:
int *f(x,y); 一个函数的返回值是一个指针类型,或者可以说返回的是一个地址。
2、函数指针:是指向函数的指针变量(多用于回调机制)
如:
int (*f) (int x); /* 声明一个函数指针 参数为x */
f=fun; /* 将fun函数的首地址赋给指针f */
三、指针数组、数组指针
1、指针数组:一个元素为指针的数组
如:
int *p[10] //[]优先级较高先和p 结合 再与int*结合说明是一个int 指针类型的数组;其中p[0] ~ p[9]都是指针类型2、数组指针:别名行指针
如:
int (*p)[10] //p是一个指针,指向一个数组可以用 *(p+5) 模式访问