当前位置: 代码迷 >> C语言 >> 谁帮我解释一下..结构体的问题
  详细解决方案

谁帮我解释一下..结构体的问题

热度:107   发布时间:2008-04-20 15:51:05.0
struct s* bi(struct s &d)
----------------解决方案--------------------------------------------------------
飞燕……抱歉哈……没明白你的真正意思……
但是,这不是语法错误,是逻辑错误,如果不给提示的话,人家就算运行发现不对,也没办法改正啊……使当地注释还是要加滴……
----------------解决方案--------------------------------------------------------
[bo]以下是引用 [un]StarWing83[/un] 在 2008-4-20 15:46 的发言:[/bo]

3#,7#全部错误,哈哈抓到飞燕的马脚真是爽啊……

嗯,确实大意了,传入的是结构而不是指针,不能改成void型函数
不过局部指针还是要去掉,纯粹冗余代码
----------------解决方案--------------------------------------------------------
燕子你用嵌套类了...我还没注意..析构函数都用上了...看来我改成引用也不算违规...呵呵.. ~s(){a=0;b='0';}
----------------解决方案--------------------------------------------------------
OK,不懂我想要说明的是什么的话,我就什么也不说了
还抓马脚,慢慢抓呀,自己找答案呀


----------------解决方案--------------------------------------------------------

#include "stdio.h"
typedef struct s
{
    int a;
    char b;
    ~s(){a=0;b=0;}
}s;

#if 1
struct s* bi(struct s& d)
{
    d.a=100;
    d.b='a';
    return &d;
}
#else
struct s* bi(struct s d)
{
    d.a=100;
    d.b='a';
    return &d;
}
#endif

int main()
{
    struct s *p;
    struct s sk;
    sk.a=155,sk.b='z';
    printf("%d,%c\n",sk.a,sk.b);
    p=bi(sk);
    printf("%d,%c\n",p->a,p->b);//这个结果为什么 100 a
    return 0;
}




尝试一下语法加亮……成功……

[[it] 本帖最后由 StarWing83 于 2008-4-20 16:34 编辑 [/it]]
----------------解决方案--------------------------------------------------------
哎,燕子生气了……
LZ你函数声明里面少加了一个“&”,具体可以看我的代码。你可以拿来编译一下看看……
[bc02] 下次注意不能轻易批评燕子,后果很严重………………
----------------解决方案--------------------------------------------------------
[bo]以下是引用 [un]StarWing83[/un] 在 2008-4-20 16:25 的发言:[/bo]





尝试一下语法加亮……成功……

我想问你是用什么编译器的》??可以使语法高亮!~~?
----------------解决方案--------------------------------------------------------