1.指针操作,防止不同名称指针指向同一个位置,造成陷阱
2.数组的指针:int (*p)[10] p是一个指针,指向是个元素的数组,+1时,是数组的整个大小
3.指针的指针:int **p p指向一个指针,这个指针指向int型
4.VOID* 指针的使用,不使用明确类型,会报错的
5.函数指针: int (*p)(int,int)
6.函数指针,回调函数
typedef int (*cmp)(int,int)
extern int A(cmp func)
int A(cmp func)
{
(*func)(1,2);
}
7.指针数组:int *p[10] 每个元素都是指针
8.入参是数组可以这么写 A(VOID *B[]) 相当于指针的指针
9.函数指针数组:int (*f[10])[int,int],定义了数组f,内容为返回int的函数指针
10.char a[]="asdfg" 相当于 strcpy(a,p)
11.char *p="asdfg" 指向只读区域,在定义一个地址也是相等的
——————————————————————————————————
const的用法
1.const int a 和 int const a是一样的
2.const int *p,p 指向一个整形变量,该变量不可改变(那改变的能赋给他么,可以赋给P108,但是const不能赋给非const),指针可以改变
3.int const *p,同上
4.int *const p 指针p不可变,但是其指向的单元的内容可以变
(目前看,应该是以*为戒,*后面对应指针,前面对应 类型)
5.正确使用const,节约大量时间,不变的都定义成const