考虑下面的C语言程序:
#include
main()
{
int i;
int *pi = &i;
scanf("%d", pi);
printf("%d\n", i+5);
}
下列哪个陈述是正确的?
(A)编译失败。
(B)执行会导致运行时错误。
(C)执行时,打印的值比变量i的地址大5。
(D)执行时,打印的值比输入的整数值大5。答案: (D)
说明:程序中没有问题,因为pi指向有效位置。
另外,在scanf()中,我们传递变量的地址,而pi是地址。
这个问题的测验