+ -
当前位置:首页 → 问答吧 → 大家好,问一个结构体赋值的问题

大家好,问一个结构体赋值的问题

时间:2010-06-29

来源:互联网

问题描述如下,请大家看看,初学C
1.定义一个结构体
struct list{
char name[50];
struct list *ptr;
};
2.声明一个结构体变量
struct list jack;
3.给该结构体变量赋值
jack={"jack",NULL};

编译时出错,出错信息如下:
error: expected expression before '{' token
程序的其他部分保证都没有问题,由于实际需要,只能是先声明,后赋值。

大家看看,不胜感谢!

作者: fansity23   发布时间: 2010-06-29

同求

作者: shang2010   发布时间: 2010-06-29

struct list jack={"jack",NULL};

作者: 新右卫门   发布时间: 2010-06-29

那本教材教你这样赋值的啊

作者: c/unix   发布时间: 2010-06-29

struct list jack={"jack",NULL};
这是初始化方法

作者: proghua   发布时间: 2010-06-29

呵呵那我先声明后初始化,怎么办啊?加上这句struct list jack={"jack",NULL};

编译器会报错:重定义了。还有别的解决方法吗?

作者: fansity23   发布时间: 2010-06-29

回复 proghua


    自己想的呵呵错了,有什么解决方法吗?我们要求的是必须声明和赋值分开来做

作者: fansity23   发布时间: 2010-06-29

两种写法:

struct list jack;
struct list tmp = {"jack",NULL};
jack = tmp;

////////////////////////////

struct list jack;
strncpy( jack.name, "jack", sizeof(jack.name) );
jack.ptr = NULL;

作者: 没本   发布时间: 2010-06-29

回复 没本


    恩谢谢,第一种我刚试了可以,谢谢了,第二种方法没试,非常感谢

作者: fansity23   发布时间: 2010-06-29

如果你是用的GNU C,那么可以使用GNU C的扩展语法

参见 http://hi.baidu.com/hellogcc/blo ... 04d12bcefca30e.html

假设struct foo和structure被声明为:

struct foo {int a; char b[2];} structure;

这里有个例子,用来使用复合文字构建一个struct foo:

structure = ((struct foo) {x + y, 'a', 0});

其等价于如下写法:

     {
       struct foo temp = {x + y, 'a', 0};
       structure = temp;
     }

作者: EricFisher   发布时间: 2010-06-29



QUOTE:
回复  proghua


    自己想的呵呵错了,有什么解决方法吗?我们要求的是必须声明和赋值分开来做
fansity23 发表于 2010-06-29 18:39




    什么公司这么要求?!怎么说声明变量时赋初值也是种好习惯啊

作者: sbc19861004   发布时间: 2010-06-29

本帖最后由 donglongchao 于 2010-06-29 20:39 编辑

你可以加上个构造函数啊,很方便的。偶就这样干。。。

LZ说的是赋值啊,我说的是初始化,sorry。。。。

作者: donglongchao   发布时间: 2010-06-29

回复 sbc19861004


    涉及到其他的调用

作者: fansity23   发布时间: 2010-06-29

回复 donglongchao


    呵呵谢谢

作者: fansity23   发布时间: 2010-06-29