本帖最后由 o景天o 于 2020-4-15 11:45 编辑
本人初学者,目前在学习指针和函数部分的关联内容,写了一段返回值为指针的函数。
代码如下:
typedef u8 *pu8;
uint8_t *sum(uint8_t value, uint8_t data)
{
pu8 sum;
uint8_t a = 0;
printf("value:%d, data:%d\n", value, data);
a = value + data + data;
sum = &a;
printf("&a:%p, a:%d, sum:%p, *sum:%d\n", &a, a, sum, *sum);
return sum;
}
main()
{
system_init();
while(1)
{
printf("sum:%p, *sum:%d \n", sum(2,3), *sum(2,3));
}
}
while(1)里面有单独的一个printf函数,间隔打印输出,目前设置的打印内容就是while(1)里的这个printf。
我编译后下载到单片机里,运行后串口输出为:
value:2, data:3
&a:17f5, a:8, sum:17f5,* sum:8
value:2, data:3
&a:17f5, a:8, sum:17f5, *sum:8
sum17f5, *sum:111
为什么最后*sum的结果是111而不是8?
|