| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 541 人关注过本帖
标题:关于结构体的一道题目
只看楼主 加入收藏
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
快速回复:关于结构体的一道题目
数据加载中...
 
   



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

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