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

📅  最后修改于: 2021-09-25 06:20:14             🧑  作者: 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 提供
这个问题的测验