OpenEdv-开源电子网

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

C语言问题

[复制链接]

60

主题

124

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
478
金钱
478
注册时间
2017-11-22
在线时间
136 小时
发表于 2018-9-5 12:01:13 | 显示全部楼层 |阅读模式
1金钱
输出的不是应该180吗
1ffad4117ad064a2158d9f4073e4e69.png

最佳答案

查看完整内容[请看2#楼]

传入结构体的话,改变的是该结构体的拷贝,原结构体不变,应该传入结构体指针
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

8

主题

89

帖子

0

精华

高级会员

Rank: 4

积分
686
金钱
686
注册时间
2017-8-8
在线时间
494 小时
发表于 2018-9-5 12:01:14 | 显示全部楼层
传入结构体的话,改变的是该结构体的拷贝,原结构体不变,应该传入结构体指针
回复

使用道具 举报

57

主题

1680

帖子

3

精华

资深版主

Rank: 8Rank: 8

积分
4307
金钱
4307
注册时间
2018-6-30
在线时间
808 小时
发表于 2018-9-5 12:52:44 | 显示全部楼层
这是Java的语言吧!看起来是输出180
业精于勤荒于嬉;行成于思毁于随!
回复

使用道具 举报

14

主题

204

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2443
金钱
2443
注册时间
2017-9-13
在线时间
559 小时
发表于 2018-9-5 13:28:24 | 显示全部楼层
要传地址,你给入参赋值,相当于什么都没做

tempc.PNG
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2018-9-5 13:31:37 | 显示全部楼层
这是错的, 改变参数, 并不等于改变原来的OBJ
正确的做方是传指针
void xxx(struct servo_conf * servo){
   servo->anglr=180;  
}

调用时
xxx(&jaw);
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2018-9-5 13:38:18 | 显示全部楼层
C传参的做法, 是把参数压栈, 你的结构体多大就用了多大的栈, 比如你的结构体size是512, 那怕你传参后只改里而的一个字节, 也是用了栈的512.

所以结构体作为参数的话, 必定是传指针, 否则是很浪费CPU的资源的
回复

使用道具 举报

7

主题

163

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2762
金钱
2762
注册时间
2017-5-17
在线时间
430 小时
发表于 2018-9-5 13:40:44 | 显示全部楼层
去了解一下C语言里面的形参和实参的区别吧,你这个问题就解决了。
回复

使用道具 举报

60

主题

124

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
478
金钱
478
注册时间
2017-11-22
在线时间
136 小时
 楼主| 发表于 2018-9-5 14:02:40 | 显示全部楼层
Arya 发表于 2018-9-5 13:49
传入结构体的话,改变的是该结构体的拷贝,原结构体不变,应该传入结构体指针

是,我用结构体指针就解决了
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-10 01:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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