基本知识:
a) int a; // An integer
b) int *a; // A pointer to an integer
c) int **a; // A pointer to a pointer to an integer
d) int a[10]; // An array of 10 integers
e) int *a[10]; // An array of 10 pointers to integers
f) int (*a)[10]; // A pointer to an array of 10 integers
g) int (*a)(int); // A pointer to a function a that takes an integer argumentand returns an integer
h) int (*a[10])(int); // An array of 10 pointers to functions that take aninteger argument and return an integer
基本知识详见如下链接:
http://blog.youkuaiyun.com/s_a_n_/article/details/8246123
请参看如下代码:
#include "stdio.h"
#include "stdlib.h"
//t_2为指针类型,指向含有10个元素的数组
//数组中每个元素都是一个指针,指向int型
typedef int *(*t_2)[10];
//fun2是一个函数,函数接受(int k)参数表,返回一个t_2类型的数据
//fun2是一个函数,函数接受(int k)参数表
//函数返回一个指针,指向含10个元素的数组
//数组中每个元素都是指针,指向int型
t_2 fun2(int k)
{
t_2 p1=NULL;
return p1;
}
//func_xx是一个函数,函数接受(int k)参数表
//函数返回一个指针,指向一个含10个元素的数组
//数组中每个元素是一个指针,指向int型
int *(*func_xx(int k)) [10]
{
t_2 p1 = NULL;
return p1;
}
int main()
{
int i;
//定义一个含12个元素的数组a,a中每个元素都是一个指针,指向一个函数
//函数接受(int k)参数表,返回一个指针,指向含10个元素的int型数组
int *(*(* a[12])(int))[10];
//定义一个指针b,b指向一个函数
//函数接受(int k)参数表,返回一个指针
//指针指向一个含10个元素的int型数组
int *(*(* b)(int))[10];
for(i=0;i<12;i++)
a[i]=fun2;
//func_xx 与fun2实际上为同一类型
b = func_xx;
b=fun2;
return 0;
}