C 结构体初始化

ljd03
#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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章