标题:关于结构体的一道题目
只看楼主
nova2201
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2007-7-14
 问题点数:0 回复次数:4 
关于结构体的一道题目

#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 
2007-09-14 10:32
hhts1987
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-9-5
得分:0 
函数不返回任何值啊 所以相当与f(s[0])无效
直接打印s[0]里面的内容
2007-09-14 10:41
無邪的睡脸
Rank: 2
等 级:等待验证会员
威 望:1
帖 子:344
专家分:13
注 册:2007-9-11
得分:0 
楼主这程序写的,看着实在有点晕!好的习惯很重要!
2007-09-14 10:45
nova2201
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2007-7-14
得分:0 
谢谢2楼点醒!
谢谢3楼指教!
2007-09-14 11:23
josen0205
Rank: 2
来 自:江苏
等 级:论坛游民
帖 子:307
专家分:52
注 册:2007-5-8
得分:0 

主要是作用域的问题,调用函数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;
}


只有想不到,没有做不到
2007-09-14 14:36



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-169859-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.061031 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved