#include <iostream>
typedef int(*type_t)[5];
int main(){
type_t tmp;
int a[5] = {1,2,3,4,5};
tmp = &a;
int *p = (int*)(&a+1);
std::cout << "*(a+1) = " << *(a+1) << std::endl;
std::cout << "*(p-1) = " << *(p-1) << std::endl;
int aa[3][5];
tmp = aa;
return 0;
}
大家看看这个程序,type_t是数组指针,是指向数组的指针。再这个程序中,tmp是指向长度为5的int型数组的指针,如果tmp+1,则前进的字节数是5*sizeof(int)。
而在二维数组中,数组名的类型就是数组指针,是指向数组的指针。如二维数组int aa[m][n],则aa的类型是int(*)[n]。
int (*s[10])(int)是函数指针数组,大小时10。函数指针的表示是:typedef int (*func_p)(int),func_p类型就是函数指针。