在写一段小程序的时候,遇到了问题。
问题1:为什么在Init 函数中L->next 等于NULL,而在main函数中不等?NULL 在C中是怎么定义的?
问题2:为什么释放L的时候会出错呢?是和L定义的位置有关吗?
代码如下:
#include<stdio.h> #include<stdlib.h>
struct node{ int data; struct node *next; };
void Init(struct node *L){ struct node *tempNode; tempNode = (struct node *) malloc(sizeof(struct node)); tempNode->next = NULL; /*next 为 NULL */ L = tempNode; if(L->next == NULL) /判断下一个是否为NULL/ printf("Init ... L->next == NULL\n"); /结果为 等于NULL/
else
printf("Init ... L->next != NULL\n");
}
void Destory(struct node *L){ free(L); }
int main(){ struct node *L; Init(L); if(L->next == NULL) /*判断下一个是否为NULL */ printf("main ... L->next == NULL\n"); else printf("main ... L->next != NULL\n");/结果为不等于NULL/ Destory(L); /释放时出错/ return 0; }
谢谢回答!
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。