C语言指针与数组复杂声明浅谈
本文主要为了解释《C程序设计语言 第二版》101页一个比较复杂的变量声明语句,在日常编程中很少遇见如此复杂的变量声明语句,书中推荐在进行复杂的变量声明时使用typedef。
那个复杂的变量声明语句到底长什么样。char (*(*x())[])()
1 | //函数如何定义 |
这种复杂声明语句的难点在于,C语言中运算符[]和()优先级最高从左向右结合,运算符*优先级低从右向左结合,C语言语法中“不同运算符结合顺序和优先级的不规律”导致容易出错。
要遵循运算符的优先级和结合顺序,每一步都小心翼翼。
将C语言转换为文字描述时,先根据定义语句写出类似于“返回一个指针,指针指向一个数组,数组中是指针,指针指向函数,函数返回……”,然后再精简成“返回一个指针,指针指向一个函数指针数组……”,也可以继续变态精简为“返回一个函数指针数组指针……”。
反之亦然。
C语言指针与数组复杂声明浅谈