指针参数需要注意

void func(u16* x, u16* y);

void main(void)
{
u32 a,b;
func(&a,&b);
...
...
}
这样的方式很多可能会得到一个错误的a,b值,因为在函数func中,x,y是被当作16位操作的。也就是说a,b的值只有低16位在函数func中被赋值了,高16位维持不变。


void func(u32* x, u32* y);
void main(void)
{
u16 a,b;
func(&a,&b);
...
...
}
程序可能会挂掉。因为a,b地址传入func后是被当做32位数据的地址操作的,操作a地址的时候会操作到4个字节,也就是说栈内a所在地址的前两个字节的值也会被修改。操作b地址的时候,a的值也会被改掉。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值