有以下程序 #include <stdio.h> typedef struct { int b, p; } A; void f(A c) /* 注意:c是结构变量名 */ { int j; c.b += 1; c.p+=2; } main() { i;

admin2020-07-28  38

问题 有以下程序
#include <stdio.h>
typedef struct { int b, p; } A;
void f(A c) /* 注意:c是结构变量名 */ {
int j;
c.b += 1; c.p+=2; }
main() {
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

解析 在C语言中,数据只能从实参单向传递给形参,称为“按值”传递。也就是说,当简单变量作为实参时,用户不可能在函数中改变对应实参的值。所以本题中在main()函数f(a)语句中结构体实参a作为值,传递给函数f(A c)中的形参c;这种值传递的方式不会对实参a产生任何影响,所以结构体实参a的值不会发生变化。
转载请注明原文地址:https://jikaoti.com/ti/hTD0FFFM
0

最新回复(0)