有以下程序:
# include
typedef struct { int b, p; } A;
void f(A c)
{ int j;
c.b += 1; c.p+=2;
}
main()
{ int i;
A a={1,2};
f(a);
printf("%d,%d\n", a.b, a.p);
}
程序运行后的输出结果是( )。
A) 2,4
B) 1,2
C) 1,4
D) 2,3
为什么选B不选A?
1.形参指针变量和实参指针变量仍然是两个不同的变量,因此改变形参指针变量的值不会影响到实参指针变量。
2.虽然形参和实参指针变量是两个变量,但是因为这两个变量的值相同,也就是指向相同的内存空间(目标变量),因此使用形参变量改变所指向内存空间(目标变量)的值,这种变化也会反映到实参所指向的内存空间(目标变量)。