husky66 2019-09-26 20:58 采纳率: 57.1%
浏览 2931
已采纳

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条)

报告相同问题?

悬赏问题

  • ¥15 maple软件,用solve求反函数出现rootof,怎么办?
  • ¥50 汇编语言除法溢出问题
  • ¥65 C++实现删除N个数据列表共有的元素
  • ¥15 Visual Studio问题
  • ¥15 state显示变量是字符串形式,但是仍然红色,无法引用,并显示类型不匹配
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波