husky66
2019-09-26 20:58
采纳率: 0%
浏览 2.2k

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.a必须要初始化,虽然不初始化里面的内容
不确定。

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

3条回答 默认 最新

  • JonathanYan 2019-09-27 00:05
    最佳回答

    可以不初始化,不初始化输出的就是随机值,即申请这段内存时存储的值。
    如果你学过c或者c++就会知道变量不赋初值会带来很严重的问题或者bug。
    很多条条框框的东西存在即是为了不让你费时间去思考不这样做会不会有问题,因为这都是前辈踩出来的坑或者血的教训,如果你非要思考这种问题,等到后面学进程锁、线程安全概念后有一堆原理等着你去剖析,一般这种问题按照规范去做就没事了。
    java中基本类型的的变量会在声明的时候进行初始化,但是坚持自己代码初始化还是一个好习惯。

    评论
    解决 2 无用 1
    打赏 举报
查看更多回答(2条)

相关推荐 更多相似问题