Step 1:
int a;//定义了一个整型变量a
int p;//定义了一个整型指针p
int **p;//定义了一个整型指针的指针
int array[];//定义了一个整型数组array
int (pointerToArray)[];//定义了一个指向整型数组的指针pointerToArray
int array[];//定义了一个数组array,数组的内容是整型指针
int method();//定义了一个方法,名字是mehtond
int (pointerToMethod)();//定义了一个指向函数的指针pointerToMethod,这个函数没有参数,返回值是整型
int *method();//定义了一个函数method,这个函数没有参数,返回值是整型指针
Step 2:
int (foo[10])();//定义了一个数组foo,数组的内容是函数,这个函数没有参数,返回值是整型,使用:foo0;
int foo1[2][2];//定义了一个二维数组foo1
int ( foo2())[] ;//定义了一个函数foo2,它的返回值是整型数组的指针
int (* foo3())(); //定义了个函数foo3,它的返回值是一个函数指针,这个函数没有参数,返回值是整型
const int grape;//定义了一个指针grape,它指向一个const的整型变量
int const grape;//定义了一个指针grape,它指向一个const的整型变量
int * const grape_jelly;//定义了一个const的指针grape_jelly,它指向一个整型变量
Step 3:
char const (next)(); //定义了一个函数指针next,这个函数没有参数,返回值是一个指针,指向一个指向char类型的常量指针
char (c[10])(int **p); //定义了一个数组c,它里面放的是函数指针,该函数的返回值是char指针,参数是整型变量的指针的指针
void (signal(int sig, void (*func)(int)) ) (int);
//定义了一个函数signal,返回一个函数指针,在signal中有两个参数,一个是整型变量,另一个是一个函数指针
总之一句话,如果你的声明比较多了,乱了,请使用typedef,或者改变方法实现。
参见:
1.expert c programming
2.http://www.netinter.cn/info/html/chengxusheji/C-C--/20080224/11853.html
3.http://blog.csdn.net/heiyeshuwu/archive/2007/01/23/1491571.aspx