考虑以下 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 是一个地址。
这个问题的测验