一些基本的概念及举例说明
1. float(**def)[10] def是一个二级指针,指向一个一维数组的针,这个一维数组的指针指向一个长度为10的数组
float ac[10][10];
float(*pc)[10] = &ac[1]; //指向二维数组的第二行
def = &pc; //二级指针
float c[10];
float(*pc)[10] = &c; //指向一维数组的指针
def = &pc; //二级指针
2. double*(*gh)[10] 指向指针数组的指针,数组中的每个元素都是double*类型
double d[10];
double c[10];
double *e[10] = { c,d };
double*(*gh)[10] = &e ;
3. double(*f[10])(); f是一个指针函数的数组
double(*a)();
double (*b)();
double (*f[10])() = { a,b };
f[0] = a;
4. int*((*b)[10]); 和 double*(*gh)[10]含义相同,都是指向指针数组的二级指针
5. long(*fun)(int) ; 定义了一个入参为int出参为long的函数指针
6. int (*(*f)(int,int))(int)
f是一个函数指针,指向的函数有两个int参娄,并返回一个函数指针的函数,
7. int(*f[10])(float) 定义了一个有10个指针的数组,每个指会指向一个函数,函数入参为float,出参为int
根据以上,二维数组的首地址本质是一个指向一维数组的指针 因此在作为函数参数时应以 int (*a)[10]的形式传参。