数组,指针数组,数组指针,函数指针数组,函数指针数组的指针
光看名字就已经乱的不行了..我现在总结出来..每种的写法...
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
//数组
void test()
{
//数组
int a[100];
//指针数组,包含100个int*的数组
int* a[100];
//数组指针,指向一个包含100个int类型的数组的指针
int (*a)[100];
//函数指针1,指向一个原型为void fun()的指针
void (*fp)();
//函数指针2,指向一个原型为char fun(char* p1,char* p2)的指针
char* (*fp)(char* p1,char* p2);
//函数指针数组1,声明了一个数组,数组名为fp,数组内存储了100个执行函数原型为void fun()的指针
void (*fp[100])();
//函数指针数组2,声明了一个数组,数组名为fp,数组内存储了100个执行函数原型为char fun(char* p1,char* p2)的指针
char* (*fp[100])(char* p1,char* p2);
//函数指针数组的指针1,指向一个包含数组内存储了100个执行函数原型为void fun()的指针
void (*(*fp)[100])();
//函数指针数组的指针2,指向一个包含数组内存储了100个执行函数原型为char fun(char* p1,char* p2)的指针
char* (*(*fp)[100])(char* p1,char* p2);
}
void test()
{
//数组
int a[100];
//指针数组,包含100个int*的数组
int* a[100];
//数组指针,指向一个包含100个int类型的数组的指针
int (*a)[100];
//函数指针1,指向一个原型为void fun()的指针
void (*fp)();
//函数指针2,指向一个原型为char fun(char* p1,char* p2)的指针
char* (*fp)(char* p1,char* p2);
//函数指针数组1,声明了一个数组,数组名为fp,数组内存储了100个执行函数原型为void fun()的指针
void (*fp[100])();
//函数指针数组2,声明了一个数组,数组名为fp,数组内存储了100个执行函数原型为char fun(char* p1,char* p2)的指针
char* (*fp[100])(char* p1,char* p2);
//函数指针数组的指针1,指向一个包含数组内存储了100个执行函数原型为void fun()的指针
void (*(*fp)[100])();
//函数指针数组的指针2,指向一个包含数组内存储了100个执行函数原型为char fun(char* p1,char* p2)的指针
char* (*(*fp)[100])(char* p1,char* p2);
}