防火小知识:char(*(*p())[])()与char(*(*p[3])())[5]
来源:百度文库 编辑:九乡新闻网 时间:2024/04/29 22:04:31
第一部分 指针基础
char *p; //p 为指向char的指针
char p[]; //p为char数组的地址(近似指针)
char **pp; //pp为指向char指针的指针
char pp[m][n] //pp为二维char数组的地址(近似指向指针的指针)
char *pp[]; <==> char* pp[] //pp是一个数组 数组元素是char指针
char(*p) []; //p指向一维char数组的指针 [] 说明是数组, *p说明是指针 指针内容是char []
总结
说明 指针是从右至左去结合的,
*p[]说明p首先是个是数组,数组元素才是指针而 *p 或者(*p)说明p首先是个指针,指针指向才是外部说明的
如char *p,p只指向了char, 而char (*p)[] 则p指向了char数组;
第二部分 函数指针与指针返回值
char (*p)(void, void); //p是个指针,指向了一个函数,返回值是char,参数是void,void
char* p(void,void); //p是个函数,返回值是char* 参数是void void
上面两个也同样说明了p从右向左结合
第三部分 难度理解
char(*(*p())[])(); <=> char(*(*p(void))[])(void); //p: 返回值为指向一维数组的指针的函数,该一维数组由指向返回char类型
的函数的指针组成。
说明:p首先是个函数 函数的返回值是指针数组,参数为void 相当于 *(*p(void))[]
然后又声明了指针数组的元素 指针数组中每个指针都指向了一个函数char(*p1)(void) p1相当于p的元素
char(*(*p[3])())[5];
说明:p首先是有3个元素的数组 元素都是指针
然后说明了数组元素指针的指向 指向一个函数相当于char(*pp)()[5] pp就是p的元素即p的每个元素都指向一个返回值是char[5] 参数为空的函数;