C 初始化结构变量时出错

C 初始化结构变量时出错,c,C,我是编程新手,所以我不知道这个问题有多严重。我正在尝试使用以下代码初始化main()中的一些结构变量: struct {double real;double imaginary;} c1={0.0,1.0},c2=(1.0,0.0),c3; 但是当我编译它(使用gcc)时,它会说:“错误:无效的初始值设定项”指向第一个大括号(第一个“double”之前的那个大括号) 那么这句话有什么不对呢?在我研究的书中(C编程,现代的Aproach-K.N.King,第379页)有一个类似的例子。 谢谢您的

我是编程新手,所以我不知道这个问题有多严重。我正在尝试使用以下代码初始化main()中的一些结构变量:

struct {double real;double imaginary;} c1={0.0,1.0},c2=(1.0,0.0),c3;
但是当我编译它(使用gcc)时,它会说:“错误:无效的初始值设定项”指向第一个大括号(第一个“double”之前的那个大括号)

那么这句话有什么不对呢?在我研究的书中(C编程,现代的Aproach-K.N.King,第379页)有一个类似的例子。
谢谢您的回答。

您需要在结构定义后添加另一个分号

编辑:试试这个

struct myNumber {
    double real;
    double imaginary;
};

struct myNumber c1 = {0.0,1.0};
struct myNumber c2 = {1.0,0.0};
struct myNumber c3;
你想命名你的结构。此外,在初始化结构变量时,您希望使用大括号。你说过这是有效的:

struct {
    double real;
    double imaginary;
} c1 = {0.0,1.0};

我猜,因为该结构作为数据类型进行编译,但您以后将无法访问该数据类型。

您需要在
c2
初始化中使用大括号,而不是括号:

struct {double real;double imaginary;} c1={0.0,1.0},c2={1.0,0.0},c3;
                                                       ^       ^

注1:忽略代码末尾的$字符;我不小心输入了它注2:当我只初始化一个变量(如c1)时,它就工作了。不止一个有什么问题吗?不,
struct{…}
是一个类型,所以
struct{…}foo
是一个匿名结构的变量声明。很抱歉,但是(如果我理解得很好的话)它不起作用。现在我收到一条警告消息:未命名的struct/union不定义任何实例哦,您需要在myNumber前面添加一个struct。我已经编辑了我的帖子。哈哈!我甚至没有注意到。。。谢谢s@user3257624很高兴我能帮忙。别忘了。