结构体什么时候调用形参对调用的实参没有影响
有以下程序:#include<stdio.h>typedefstruct{intb,p;}A;voidf(Ac)/*注意:c是结构变量名*/{intj;c.b+=1;c....
有以下程序:
# include <stdio.h>
typedef struct { int b, p; } A;
void f(A c) /* 注意: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 展开
# include <stdio.h>
typedef struct { int b, p; } A;
void f(A c) /* 注意: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 展开
1个回答
2013-08-08
展开全部
B)1,2
因为你这里参数实际上传值,只是把a的值传过去而已,所以f(a)函数中对a的改变,无法影响到实参.
如果该为:
void f(A *C)
{
....
}
同时调用:
f(&a);
这中情况下就是传地址,实际就是指针,此时f(&a)中直接操作的是a的内存地址,所以会影响实参a的值,输出A),2,4
因为你这里参数实际上传值,只是把a的值传过去而已,所以f(a)函数中对a的改变,无法影响到实参.
如果该为:
void f(A *C)
{
....
}
同时调用:
f(&a);
这中情况下就是传地址,实际就是指针,此时f(&a)中直接操作的是a的内存地址,所以会影响实参a的值,输出A),2,4
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询