以下程序打印的值是
void f(int* p, int m)
{
m = m + 5;
*p = *p + m;
return;
}
void main()
{
int i=5, j=10;
f(&i, j);
printf("%d", i+j);
}
(一) 10
(乙) 20
(C) 30
(四) 40答案: (C)
解释:
#include"stdio.h"
void f(int* p, int m)
{
m = m + 5;
*p = *p + m;
return;
}
int main()
{
int i=5, j=10;
f(&i, j);
printf("%d", i+j);
}
对于 i,地址被传递。对于 j,传递值。所以在函数f 中,p 将包含 i 的地址,m 将包含值 10。f() 的 Ist 语句会将 m 更改为 15。然后将 15 添加到地址 p 处的值。它将使 i = 5+15 = 20。j 将保持为 10。print 语句将打印 20+10 = 30。所以答案是 C。
这个问题的测验