husky66 2019-09-26 20:47 采纳率: 57.1%
浏览 1970
已采纳

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条回答 默认 最新

  • threenewbee 2019-09-27 00:10
    关注

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

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作