#include <stdio.h>
struct STU
{
int a;
float b;}; void f (struct STU p)
{ struct STU s[2]={{20044,550 },{20045,537}};
p.a=s[1].a; p.b=s[1].b ;
}
main ()
{struct STU s[2]={{20041,703},{20042,580}} ;
f(s[0]);
printf("%d %3.0f\n",s[0].a,s[0].b) ;
}
运行结果是 20041 703
有谁能给我解释一下吗?先谢谢了
----------------解决方案--------------------------------------------------------
函数不返回任何值啊 所以相当与f(s[0])无效
直接打印s[0]里面的内容
----------------解决方案--------------------------------------------------------
楼主这程序写的,看着实在有点晕!好的习惯很重要!
----------------解决方案--------------------------------------------------------
谢谢2楼点醒!
谢谢3楼指教!
----------------解决方案--------------------------------------------------------
主要是作用域的问题,调用函数f后,主函数中的s[0]没有改变
如果将函数f的参数改为引用void f (struct STU &p),结果就为20045 537
#include <stdio.h>
#include <conio.h>
struct STU
{
int a;
float b;
};
void f (struct STU &p)
{
struct STU s[2]={{20044,550 },{20045,537}};
p.a=s[1].a; p.b=s[1].b ;
}
int main ()
{
struct STU s[2]={{20041,703},{20042,580}} ;
f(s[0]);
printf("%d %3.0f\n",s[0].a,s[0].b) ;
getch();
return 0;
}
----------------解决方案--------------------------------------------------------