| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 569 人关注过本帖
标题:初学 问个关于struct的问题 请大家帮忙
只看楼主 加入收藏
大大猫
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2011-8-19
结帖率:81.25%
收藏
已结贴  问题点数:20 回复次数:2 
初学 问个关于struct的问题 请大家帮忙
struct ss
{
    char m[20];
    int n;
};
void main()
{
   const struct ss &f(struct ss & a);
    struct ss s1={"heel",0};
    struct ss s2;
    s2=f(s1);
    cout<<s2.n <<"  "<<s2.m <<endl;
    cout<<s1.n <<"   "<<s1.m<<endl;
    cout<<f(s1).n <<"   "<<f(s1).m<<endl;
    cout<<s1.n <<"  "<<s1.m <<endl;
}
 const struct ss &f(struct ss & a)
{
   a.n ++;
   return a;
}
为什么这个程序的结果 n的值是 1 1 3 3
而结构体如果只有成员n,没有字符串,结果是 1 1 2 2
请帮忙指教下 谢谢!
搜索更多相关主题的帖子: void 
2012-01-11 10:23
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9032
专家分:54066
注 册:2011-1-18
收藏
得分:10 
因为你将少写一个 f(s1).m
也就是少了一次 a.n++
2012-01-11 11:45
BianChengNan
Rank: 8Rank: 8
等 级:贵宾
威 望:13
帖 子:302
专家分:972
注 册:2011-11-30
收藏
得分:10 
如果没有成员m的话,你就不会调用f(s1).m,那么成员n就不会增加两次。也就是输出 1 1 2 2
 如果你把 cout<<f(s1).n <<"   "<<f(s1).m<<endl;改成  cout<<f(s1).n <<"   "<<f(s1).n<<endl;输出结果可能会意外,结果是这样的
1 1 3 2 ,通过查看汇编代码可以明白 cout<<f(s1).n <<"   "<<f(s1).n<<endl; 的执行过程,具体自己看汇编。



我的群:149544757 C/C++/Assembly 喜欢交流的朋友进,进群请写消息
2012-01-13 18:03
快速回复:初学 问个关于struct的问题 请大家帮忙
数据加载中...
 
   



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

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