C语言——复杂指针的读写
1、函数指针
int (*p)(int, int);
“p”是一个返回值为int类型,参数为 (int, int)类型的函数指针
通常使用typedef来定义它的类型:typedef int (*p)(int, int);
此时p是一个类型,不是一个变量。
2、函数指针数组
int (*p[5])(int, int);
“p”是一个具有5个元素的数组,数组元素的类型是“返回值为int类型,参数为 (int, int)类型的函数指针”
赋值方法:
int (*p[5])(int, int) = {func1, func2, func3, func4, func5};
或
p[0] = func1;
p[1] = func2;
...
调用的时候就当函数名调用就行,函数名本身就是函数指针常量。
1 int* (*(*(*abc)())[6])(); 2 /* 3 * 1、(*abc)()——函数指针 4 * 2、(*(某1))[6]——某的数组的指针 5 * 3、int* (*(某2))()——返回值为int*类型的某的函数指针 6 * 组合方式:12321 7 * 组合:(以(指向((返回值为int*类型的(函数指针))数组)的指针)为返回值的)函数指针 8 * 解析:首先(*abc)()是一个函数指针,函数指针的返回值是什么呢? 9 * 返回值是一个指针,指针指向什么呢? 10 * 指针指向一个数组,数组是什么类型的呢? 11 * 数组是函数指针类型的,函数指针的返回值是什么呢? 12 * 返回值是int*类型。 13 **/