C语言|集4

在GATE CS考试中提出了以下问题。

null

1.使用C语言(GATE CS 2002) a) 当前激活记录和主服务器的激活记录之间最多存在一条激活记录 b) 当前激活记录和main的激活记录之间的激活记录数取决于实际的函数调用顺序。 c) 全局变量的可见性取决于实际的函数调用顺序。 d) 递归要求在调用递归函数之前,将递归函数的激活记录保存在不同的堆栈上。

答复(b) a) –>在C语言中没有这样的限制 b) 是的 c) –>错。在C语言中,变量的作用域是静态的,而不是动态的。 c) –>错。激活记录存储在同一堆栈上。

2、考虑下面的C程序。

# include <stdio.h>
# define print(x)  printf ("%d", x)
int x;
void Q( int z)
{
z += x;
print(z);
}
void P( int *y)
{
int x = *y+2;
Q(x);
*y = x-1;
print(x);
}
main( void )
{
x=5;
P(&x);
print(x);
getchar ();
}


该程序的输出为(GATE CS 2003) a) 1276年 b) 22 12 11 c) 14 6 6 d) 766

答复(a)

注意main()和Q()正在访问全局变量x。在P()内部,指针变量y也保存全局变量x的地址,但P()中的x是它自己的局部变量。

请看 门角 所有上一年的论文/解决方案/解释、教学大纲、重要日期、笔记等。

如果您发现任何答案/解释不正确,或者您想分享有关上述主题的更多信息,请发表评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享