p malloc后就不是指向a了,你子函数里改的不是a变量所在地址里的东西,你把malloc那句去掉应该可以达到你想要的效果。
东胜网站建设公司创新互联,东胜网站设计制作,有大型网站制作公司丰富经验。已为东胜近1000家提供企业网站建设服务。企业网站搭建\外贸网站制作要多少钱,请找那个售后服务好的东胜做网站的公司定做!
#includestdio.h
#includestdlib.h
typedef struct Lnode
{
int data;
struct Lnode *next;
}Lnode,*LinkList;
LinkList Init()
{
LinkList L = NULL;
printf("%d ",L);
L=(LinkList)malloc(sizeof(Lnode));
printf("%d ",L);
L-next=0;
return L;
}
void main()
{
LinkList A = NULL;
printf("%d ",A);
A = Init();
}
按你说的,没有把指针返回也没有释放,那么函数返回时开辟的空间还在,但你已无法引用。
用malloc是在堆中分配的空间,用完需用自已显示释放.
采用如int
a=0的方式会在栈中分配空间,函数返回时栈指针回移,此空间仍能被其它函数使用(相当于自动释放)