数组—指针数组—函数指针—函数指针数组
说明:本文为我的记忆结构,要先理解每个关键词的意义,才能看懂我的文章。
我将其按照结构分为两种即 1.指针 2.数组
- 数组
- 普通数组
- 指针数组
- 数组指针的数组
- 函数指针数组
- 指针
- 普通指针
- 普通二级指针
- 数组指针
- 数组二级指针
- 指针数组的指针
- 指针数组的二级指针
- 函数指针
- 函数指针的二级指针
- 函数指针数组的指针
- 函数指针数组的指针的二级指针
** 函数指针和数组的指针的声明是有规律的,a[10]=*(a+10)
学懂这部分内容还需要指针的运算规律,,,小提示:指针和日期的运算规律很像!!!
全部代码
int a = 10;//整型变量
int arr1[10] = { 1,2,3,4,5,6,7,8,9,10 };//整形数组
int* p = &a;//整形指针变量指针 指针存储公式:存储类型 数据类型 *变量名 = 相同数据类型的地址;
int (*arr_1)[10] = &arr1;//指向整形数组的指针
int(*arr_11)[10] = &arr1;
int(*bbb[2])[10] = { arr_1, arr_11 };
//存放数组指针的数组,该数组有2个元素,每个元素是int类型长度为10的数组指针
int* arr2[2] = { *arr_1 ,*arr_11};//指针数组
int*(*aaa)[2] = &arr2;//指向指针数组的指针
int (*q)(int, int) = &add;//函数指针
int (**qqq)(int, int) = &q;//指向函数指针的指针(二级指针)
int (*p1[])(int, int) = { add };//函数指针数组
int (*(*pp)[1])(int, int) = &p1;//指向函数指针数组的指针
int (*(**pppp)[1])(int, int) = &pp;//指向函数指针数组的指针的指针(二级指针)