天下3孔雀灵宫:结构体问题

来源:百度文库 编辑:神马品牌网 时间:2024/05/05 21:44:19
typedef struct
{int a;
char b;
}ST;
ST fun(ST x)
{x.a=99;x.b='S';return x;}
main()
{ST y;
y.a=0;
y.b='A';
printf("y.a=%d y.b=%d\n",y.a,y.b);
y=fun(y);
printf("y.a=%d y.b=%d\n",y.a,y.b);
}

函数传递的是结构体变量,
他成员的值怎么会改变呢?

y的值改变主要是因为这个语句:y=fun(y);

在fun函数返回的时候,将修改后的ST结构体变量x(ST x)赋值给了y;
ST fun(ST x)
{x.a=99;x.b='S';return x;}
这样,当然y不是原来的那个变量了。

如果写成 fun(y); y的值是不会变的。

应该输出
y.a=0 y.b=A
y.a=99 y.b=S

是不是哦,
先定义了一个结构体
ST

然后你定义一个结构体对象
y 你给他值 y.a y.b 然后你调用了 fun 这个函数
参数还是这个结构体,而且在函数里你把 a 和 b 的值都改变了,然后把改变后的值反回来,再把修改过的传给Y这样值当然会变!

哦另外你输出的时候把字符 A和S 按整数的方式输出,他会转换成ASCII码,所以输出结果是:

y.a=0 y.b=65
y.a=99 y.b=83

另外你写程序注意格式,这样写出来的代码更好看,而且效率更高!