keil 结构体赋值问题

2019-08-20 15:47发布

#define  LC  {1,2,3}
typedef struct A1

int a;
int b;
int c;
}A
void main()

    A abc= (A)LC;//这样是可以的

  //但是这样却不行
   A abc;
  abc  = (A)LC;//会被报错;



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
ianhom
1楼-- · 2019-08-20 20:32
结构体初始化是可以这么写,但是赋值时不能这么做。如果想结构体整体赋值,可以A abc; A edf = {1,2,3}; abc = edf;
chenlang
2楼-- · 2019-08-21 00:55
ianhom 发表于 2017-4-29 23:01
结构体初始化是可以这么写,但是赋值时不能这么做。如果想结构体整体赋值,可以A abc; A edf = {1,2,3}; a ...

为什么不能整体 赋值?定义初始化 不是 定义+赋值
ianhom
3楼-- · 2019-08-21 05:31
chenlang 发表于 2017-4-29 23:08
为什么不能整体 赋值?定义初始化 不是 定义+赋值

是C语言这么定义的。
初始化结构体的时候可以使用这样的方法整体赋值,但在后续的使用中是需要对结构体成员依次赋值。
初始化赋值和后续使用的赋值是还有差别的,例如定义全局结构体 A abc = {1,2,3}; 那这个赋值过程在设备上电后进入main函数之前就完成了 ,而后续对结构体赋值就是用户的c代码去操作的

还有一种很少用的结构体整体赋值方法就是之前说的,结构体整体赋值给另一个结构体,在这个帖子中有讲
http://www.openedv.com/forum.php ... id=81346&extra=

一周热门 更多>