常量const与指针
1、常量指针:是一个指针,指针指向一块常量空间 const int p or int const p;
指针的指向可以更改,指针指向的空间的值不能修改
2、指针常量:是一个常量,常量不能修改其值 int *const p;
指针的指向不能更改,指针指向的空间的值可以更改
3、常量指针常量:既是一个指针,也是一个常量 const int *const p;
指针的指向不能更改,指针指向的空间的值也不能更改
数组与指针
int arr[2][3] = {{1,2,3},{4,5,6}};
数组名arr保存的是行首地址,偏移一次偏移的是一个数组的大小
arr[0]保存的是二维数组中第一个数组的首地址
*(arr+0) => arr[0] :获取到的是第一个数组的首地址
*(arr+0) + 0 :获取到的是第一个数组的第一个元素的地址
((arr+0) + 0) :获取到的是第一个数组的第一个元素的值
函数与指针
函数名记录的是一个地址,该地址是函数的入口地址
函数指针
是一个指针,该指针指向一个函数的入口地址 int (*p)(int,int);一般用于回调函数
指针函数
是一个函数,返回值为一个指针 char *strcpy(char *dest,const char *dest);
函数指针数组
是一个数组,该数组的每一个下标元素存放的是函数指针 int (*funcarr[3])(int,int);
指向函数指针的指针函数数组
是一个数组,是一个函数指针数组,该数组中的每一个下标元素存放的是一个指向指针函数的函数指针 int *(*funcarr[3])(int,int);