有如下程序 #include #include struct S { char name[10]; }; void change(struct S *data, int value) { strcpy(data->name, "****"); valu

admin2015-07-28  23

问题 有如下程序
#include
#include
struct S
{
char name[10];
};
void change(struct S *data, int value)
{
strcpy(data->name, "****");
value = 13;
}
main()
{
struct S input;
int num = 4;
strcpy(input.name, "THIS");
change(&input, num);
printf("%s,%d\n", input.name, num);
}
程序运行后的输出结果是( )。

选项 A、****,4
B、****,13
C、THIS,4
D、THIS,13

答案A

解析 函数change()的第一个参数为结构体变量地址作为函数参数,为地址传参,形参和实参指向的为同一块内存地址,所以对数组元素的改变能够影响到实参。语句"strcpy(data->name, "**** ");"则将data指向的结构体变量中的name值变为"****";函数change()的第二个参数为值传参,所以对num的值没有改变,输出结果为4,答案选A。
转载请注明原文地址:https://kaotiyun.com/show/BKJp777K
0

最新回复(0)