C语言中结构体必须要初始化吗?
#include<stdio.h>
#include<stdlib.h>

struct stu
{
    int a;
    char b;
    float c;
    char arr[10];
};

int main(void)
{
    struct stu  st;
    //memset(st, 0, sizeof(st));
    printf("%d\n", st.a);

    return 0;
}

结构体在使用它时,必须要初始化吗,在声明完变量st后不是已经分配空间了吗?
直接输出其中的st.a为什么不行,虽然其中的只不确定。

1个回答

结构体虽然分配了空间,但是里面的成员的值是随机的,特别是如果里面有指针的话,如果不初始化而直接访问,则会造成读取非法的内存地址的错误。

学校里面的学生和专业程序员的区别在于,前者无知因此无畏。你要知道,开发程序中编写初始的代码花费1小时,那么维护这个代码需要3小时,调试代码排除错误需要花6小时。当你维护和调试不规范的代码而花费大量的时间精力的时候,你自然就明白预防性编程,也就是用规范编写代码来杜绝错误隐患,比起少写那么一行代码,有价值得多。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐