注册 登录
编程论坛 C++教室

初学 问个关于struct的问题 请大家帮忙

大大猫 发布于 2012-01-11 10:23, 569 次点击
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
请帮忙指教下 谢谢!
2 回复
#2
rjsp2012-01-11 11:45
因为你将少写一个 f(s1).m
也就是少了一次 a.n++
#3
BianChengNan2012-01-13 18:03
如果没有成员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; 的执行过程,具体自己看汇编。


1