C和指针 第十二章 结构体 整体赋值 error: expected expression

Posted 日拱一卒,功不唐捐

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C和指针 第十二章 结构体 整体赋值 error: expected expression相关的知识,希望对你有一定的参考价值。

定义结构体后整体赋值时发生错误

typedef struct NODE {
	struct NODE *fwd;
	struct NODE *bwd;
	int value;
} Node;
//声明变量
Node first;
first = {NULL, &second, 4};

错误: error: expected expression

之所以不行是,{}内容被当做语句块了,c语言允许直接对结构体初始化,或者在赋值的时候加上类型说明,或者是逐一赋值。

初始化赋值: 

typedef struct NODE {
	int value
} Node;
//初始化赋值
Node a = {1};
Node b;
b = a;

添加类型赋值:

Node A;
A = (Node){NULL, NULL, 1};

 单个赋值:

Node A;
A.value = 1;

所以,除非初始化或者强制类型转换否则,无法整体赋值结构体。

http://stackoverflow.com/questions/12189480/why-structs-cannot-be-assigned-directly

以上是关于C和指针 第十二章 结构体 整体赋值 error: expected expression的主要内容,如果未能解决你的问题,请参考以下文章

C和指针 第十二章 使用结构和指针

C语言第十二章:结构体共用体(联合体)枚举typedef

第十二章 使用结构指针

C++primer第十二章读书笔记---动态内存与智能指针

《C与指针》第十二章练习

《C++Primer(第5版)》第十二章笔记