输出是:1001,ZhangDa,1098.0
楼主的意思是想输出:1002,ChangRong, 1202.0
可以改成以下那样,改的地方已经注释
#include
#include
struct A
{
int a;
char b[10];
double c;
};
struct A* f(struct A t); //函数不要无返回值,返回一个结构类的指针
void main()
{
struct A aa={1001,"ZhangDa",1098.0}; //用aa吧,不要跟结构里面的a混淆了
aa = *f(aa); //给aa重新赋值
printf("%d,%s,%6.1f\n",aa.a,aa.b,aa.c);
}
struct A* f(struct A t)
{
t.a=1002;
strcpy(t.b,"ChangRong");
t.c=1202.0;
return &t; //返回地址
}
1002,ChangRong, 1202.0
主函数中调用了f函数,f函数的功能是改变形参t所指向的结构体变量的值,现在通过函数调用把结构体变量a的值传递给了形参t;两者公用一段内存单元,改变了t就改变了a;在f函数中把a改编成了1002,ChangRong, 1202.0 ;因此应输出1002,ChangRong, 1202.0 ;
{1001,"ZhangDa",1098.0
1001,zhangda 1098.0我也做过这个题目。。。