📜  门| GATE-CS-2016(套装1)|问题 22

📅  最后修改于: 2021-09-24 05:29:41             🧑  作者: Mango

考虑以下 C 程序。

void f(int, short);
void main()
{
  int i = 100;
  short s = 12;
  short *p = &s;
  __________ ;   // call to f()
}

以下哪一个表达式,当放在上面的空白处时,不会导致类型检查错误?

(A) f(s, *s)

(B) i = f(i,s)
(C) f(i,*s)
(D) f(i,*p)答案: (D)
说明: i 是整数,*p 是指向 short 的指针的值。

1) 选项 1 是错误的,因为我们将“*S”作为第二个参数传递检查 S 不是指针变量。所以错误
2)第二个选项是我们试图将 f(i,s) 的值存储到 i 中,但查看 main 之外的函数定义,它没有返回类型。它只是无效,因此分配是错误的。所以错误
3) 选项 3 错误,原因与选项 1 错误的原因相同
4)所以选项d是正确的。
这个问题的测验