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,数组的内容是函数,这个函数没有参数,返回值是整型,使用:foo[0](2);
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
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,数组的内容是函数,这个函数没有参数,返回值是整型,使用:foo[0](2);
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