一、指针数组
/*********************************************************
1.这是一个数组 因此长度为数组长度
2.这个数组存放5个指针
3.这个数组的五个指针都指向 int 类型变量
**********************************************************/
int *arrInt[5];
sizeof(arrInt) = sizeof(int *[5]) = 5*4=20
printf("sizeof(arrInt) = %d\n",sizeof(arrInt)); //输出20
二、数组指针
/*************************************************
1.这是一个指针 因此大小为指针大小
2.这个指针指向一个长度为 5 的一维数数组
3.这个数组的类型是 int 类型
**************************************************/
int (*arrInt)[5]
sizeof(arrInt) = sizeof(int *) = 4
printf("sizeof(arrInt1) = %d\n",sizeof(arrInt1)); //输出4
三、举例
参考:linuxC/C++指针函数和函数指针 和 C/C++指针与一维数组与函数形参(int类型)
例一:int (*a[10])(int)
1. a是一个数组 2. a这个数组的元素是一个指针 3. 指针是一个函数指针 4. 这个函数参数是int,返回值是int
例二:int (*(*p)[10])(int*)
1. p是一个指针 2. p这个指针指向一个数组 3. 数组元素是指针 4. 数组元素的指针指向一个函数 5. 这个函数参数是int*,返回值是int
例三:
int *a[10]; //指向int类型的指针数组a[10]
int (*a)[10]; //指向有10个int类型的数组的指针a
int (*a)(int); //函数指针,指向有一个参数并且返回类型均为int的函数
int* a(int); //定义一个int参数并且返回类型为int*的函数
int (*a[10])(int); //函数指针的数组,指向有一个参数并且返回类型均为int的函数的数组