C语言 结构体 函数调用问题
把问题简化如下:#include<stdio.h>typedefstruct{inta;}list;list*creat(){listLi,*l;l=&...
把问题简化如下:#include <stdio.h>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呢?
展开
3个回答
展开全部
//问题出在下边这个函数上。
list
*
creat()
{
list
Li,*l;
//LI是局部变量,退出后会消失。所以
l=&Li这样是不稳定的。会引起系统崩溃。
l=&Li;
l->a=8;
return
l;
}
改为如下:
list
*
creat()
{
list
*l;
l=new
list;
l->a=8;
return
l;
}
list
*
creat()
{
list
Li,*l;
//LI是局部变量,退出后会消失。所以
l=&Li这样是不稳定的。会引起系统崩溃。
l=&Li;
l->a=8;
return
l;
}
改为如下:
list
*
creat()
{
list
*l;
l=new
list;
l->a=8;
return
l;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你creat函数里的Li是局部动态变量
执行完这个函数之后
Li所占的内存被释放了
你把它的地址赋给i是没有意义的
任意值都可能出现
执行完这个函数之后
Li所占的内存被释放了
你把它的地址赋给i是没有意义的
任意值都可能出现
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询