当前位置:编程学习 > 网站相关 >>

指针参数需要注意

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的值也会被改掉。

补充:综合编程 , 其他综合 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,