C语言所有复杂的指针声明,都是由各种声明嵌套构成的。看起来貌似复杂没有章法,其实C语言你可以用左右法则解读复杂指针声明。
The right-left rule: Start reading the declaration fromthe innermost parentheses, go right, and then go left. When you encounterparentheses, the direction should be reversed. Once everything in theparentheses has been parsed, jump out of it. Continue till the wholedeclaration has been parsed.
这段英文的翻译大概是:
右左法则:首先从最里面的圆括号看起,然后往右看,再往左看。每当遇到圆括号时,就应该掉转阅读方向。一旦解析完圆括号里面所有的东西,就跳出圆括号。重复这个过程直到整个声明解析完毕。
我觉得要注意一点是:需要从未定义的标识符开始阅读,而不是只从括号读起,之所以是未定义的标识符,是因为一个声明里面可能有多个标识符,但未定义的标识符只会有一个,重点在于未定义的标识符。
下面是面试的例题,用以分析掌握左右法则: