当前位置: 代码迷 >> C语言 >> 关于结构体的一道题目
  详细解决方案

关于结构体的一道题目

热度:91   发布时间:2007-09-14 10:32:02.0
关于结构体的一道题目

#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
有谁能给我解释一下吗?先谢谢了

搜索更多相关的解决方案: 结构体  STU  struct  float  

----------------解决方案--------------------------------------------------------
函数不返回任何值啊 所以相当与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;
}


----------------解决方案--------------------------------------------------------
  相关解决方案