永发信息网

C语言 结构体 函数调用问题

答案:1  悬赏:0  手机版
解决时间 2021-02-06 11:44
  • 提问者网友:王者佥
  • 2021-02-05 14:52
把问题简化如下:#include typedef struct { int a;}list;list * creat(){ list Li,*l; l=&Li; l->a=8; return l;}void print(list *l){ printf("%d",l->a);}void main(){ list *l=creat(); print(l);} 为什么 输出a的值不是8呢?
最佳答案
  • 五星知识达人网友:英雄的欲望
  • 2021-02-05 15:18
很简单,因为你的List Li, 这个是局部变量,它的内存是creat返回之后就被释放了,所以应该是一个不确定的值
改法:
可将List Li 搬到函数外面,做一个全局变量使用,也可以在main函数中定义,通过参数传入creat
list Li;
list * creat()
{
list*l;
l=&Li;
l->a=8;
return l;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯