#include <stdio.h>
struct node {
int data;
struct node* next;
};
typedef struct node Node;
int main() {
Node a;
a.data = 1;
if (!a.next) {
printf("hello world");
}
}
我正在编写一个小的链表程序来开始学习 c,我很困惑为什么 a.next 不为空。
简而言之,每当您在 C 中分配一些内存(显式或隐式)时,内存将使用创建 main 函数的堆栈帧(即垃圾)时存在的任何内容进行初始化。这也适用于您的int
值(删除a.data = 1
并打印 的值a.data
)。C 不会将它为您分配的内存归零(这使 C 更有效率)。正如 Anandha 建议的那样,只需将指针设置为NULL
即可避免此问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句