以下C语句声明了什么? [1分]
int ( * f) (int * ) ;
(A),它接受一个整数指针作为参数,并返回整数函数。
(B)一个函数,它的整数作为参数并返回一个整数指针。
(C)指向以整数指针作为参数并返回整数的函数的指针。
(d)一种函数,它的整数指针作为参数并返回一个函数指针
答案: (C)
说明:读取复杂声明的步骤:
1)将C声明转换为后缀格式,然后从左到右读取。
2)要将表达式转换为后缀,请从最里面的括号开始,如果不存在最里面的括号,则从声明名称开始,然后右移。第一次遇到结尾括号时,请向左走。解析完整个括号后,便会从括号中出来。
3)继续直到解析完完整的声明。
首先,我们将以下给定的声明转换为后缀:
int ( * f) (int * )
由于没有最里面的括号,因此首先我们使用声明名称f,然后打印“ f”,然后移至右侧,因为没有要解析的内容,因此移至左侧。左侧有*,因此打印“ *”。请放在括号内。因此,给定声明的后缀符号可以写为:
f * (int * ) int
含义:f是指向返回int的函数的指针(该函数采用int指针类型的一个参数)。
请参阅https://www.geeksforgeeks.org/complicated-declarations-in-c/
该解决方案由Nirmal Bharadwaj贡献。
这个问题的测验