📜  门| GATE-CS-2005 |问题1

📅  最后修改于: 2021-07-02 16:40:18             🧑  作者: Mango

以下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贡献。
这个问题的测验