复杂类型的说明:
1、int p; //p为返回一个int类型的变量
2、int *p; // 1>: p先于*结合,说明p是一个指针,
//2>:再与int结合,说明这是一个int类型的指针;
//也可以这样理解,*修饰p,说明p是一个指针,int 修饰 *p,说明定义了一个int类型的指针;
/**********************************************************************************/
3、int p[3]; //p先于[]结合,说明p是一个数组,再与int 结合,说明定义了一个int类型的数组;
4、int *p[3]; //1>:p先于[]结合,说明p是一个数组,
//2>:再与*结合,说明数组里的元素为指针类型,
// 3>:再与int结合,说明定义了一个int类型的存储指针的数组,即int类型的指针数组;
也可以这样理解:*修饰的是一个数组,即指针数组;
5、int (*p)[3]; //p先于*结合,说明p是一个指针,再与[]结合,(*p)修饰[],(*p)为指针所指向的内容,(*p)[]:说明指针所指向的内容是一个数组,即指向数组的指针,即数组指针;
/*********************************************************************************/
对照记忆:
int p(int n):函数 | int p[3]:数组 |
int *p[3]:存储指针的数组,即指针数组 | |
int (*p)(int n):指向函数的指针,即函数指针 | int (*p)[3]:指向数组的指针,即数组指针 |
原文:http://www.cnblogs.com/zhangkai163/p/5104744.html