OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5189|回复: 3

keil 结构体赋值问题

[复制链接]

6

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2016-11-4
在线时间
10 小时
发表于 2017-4-29 22:23:17 | 显示全部楼层 |阅读模式
#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;//会被报错;



正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

538

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3371
金钱
3371
注册时间
2015-1-7
在线时间
794 小时
发表于 2017-4-29 23:01:37 | 显示全部楼层
结构体初始化是可以这么写,但是赋值时不能这么做。如果想结构体整体赋值,可以A abc; A edf = {1,2,3}; abc = edf;
回复 支持 反对

使用道具 举报

6

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2016-11-4
在线时间
10 小时
 楼主| 发表于 2017-4-29 23:08:48 | 显示全部楼层
ianhom 发表于 2017-4-29 23:01
结构体初始化是可以这么写,但是赋值时不能这么做。如果想结构体整体赋值,可以A abc; A edf = {1,2,3}; a ...

为什么不能整体 赋值?定义初始化 不是 定义+赋值
回复 支持 反对

使用道具 举报

9

主题

538

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3371
金钱
3371
注册时间
2015-1-7
在线时间
794 小时
发表于 2017-4-30 07:48:47 | 显示全部楼层
chenlang 发表于 2017-4-29 23:08
为什么不能整体 赋值?定义初始化 不是 定义+赋值

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

还有一种很少用的结构体整体赋值方法就是之前说的,结构体整体赋值给另一个结构体,在这个帖子中有讲
http://www.openedv.com/forum.php ... id=81346&extra=
机器生汇编,汇编生B,B生C,C生万物.... 经过长期对C语言的研究,目前只有两个方面不懂:这也不懂,那也不懂
https://github.com/ianhom
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-8-21 18:16

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表