有了第一道题的功底, 试着答一下
分析, <br /><br />先把基本理论写上: <br />int *p; p为指向整型量的指针变量<br />int *p[n]; p为指针数组, 由n个指向整型量的指针元素组成。<br />int (*p)[n]; p为指向整型二维数组的指针变量, 二维数组的列数为n<br />int *p() p为返回指针值的函数, 该指针指向整型量<br />int (*p)() p为指向函数的指针, 该函数返回整型量<br />int **p p为一个指向另一指针的指针变量,该指针指向一个整型量<br />标识符右边的方括号和圆括号优先于标识符左边的"*"号, 而方括号和圆括号以相同的优先级从左到右结合. <br /><br />阅读组合说明符的规则是"从里向外": 从标识符开始, 先看它右边有无方括号或园括号, 如有则先作出解释, 再看左边有无*号. 如果在任何时候遇到了闭括号, 则在继续之前必须用相同的规则处理括号内的内容. 例如:<br />int *(*(*a)())[10];<br />↑ ↑↑↑↑↑↑<br />7 6 4 2 1 3 5<br />上面给出了由内向外的阅读顺序, 下面来解释它:<br />(1)标识符a被说明为;<br />(2)一个指针变量, 它指向;<br />(3)一个函数, 它返回;<br />(4)一个指针, 该指针指向;<br />(5)一个有10个元素的数组, 其类型为;<br />(6)指针型, 它指向;<br />(7)int型数据.<br />因此a是一个函数指针变量, 该函数返回的一个指针值又指向一个指针数组, 该指针数组的元素指向整型量.<br /><br />
|
|