husky66 2019-09-26 20:58 采纳率: 33.3%
浏览 3011
已采纳

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 关于#vscode#的问题:ESP32开发板对接MQTT实现小灯泡的开关
  • ¥15 TMC2209串口模式下读取不到寄存器的值串口助手蓝色字体是发过去的消息,绿色字体是收到的消息,第二行发送读取寄存器的指令但是没有读取到寄存器的值串口助手如下图:接线如下图,如何解决?
  • ¥15 高通安卓11提取完整线刷包软件,或者优博讯dt50顺丰刷机包
  • ¥20 C,有个译码器,换了信道就跑不出原来数据
  • ¥15 MIMIC数据库安装问题
  • ¥60 基于JTag协议开发Fpga下载器上位机,哪位大🐂有偿指导?
  • ¥20 全书网Java爬取数据
  • ¥15 怎么获取红包封面的原始链接,并且获取红包封面序列号
  • ¥100 微信小程序跑脚本授权的问题
  • ¥100 房产抖音小程序苹果搜不到安卓可以付费悬赏