u8 *Analy_String(u8 da)
{
u8 table[4];
table[0]=da/100+48;
table[1]=da%100/10+48;
table[2]=da%10+48;
table[3]='\0';
return &table[0];
}
Write_String(0xC0,Analy_String(i));
用protues仿真,数据错误;把数据设置成全局后,数据正确;
但是我在单片机测试,发现函数内定义数组返回地址,读取数据是正确的;不是说局部变量都是保存在栈里的吗?这是怎么回事。
------解决思路----------------------
局部变量已经被释放了 该内存地址可以被分配了 但是地址内存的值并没有改变 仍然是上次分配地址空间的值
楼主可以进行测试一下
temp = Analy_String(i)
;//
;//申请 占用内存栈的局部变量
Write_String(0xC0,temp);