连初级都算不上的代码小白 2023-04-19 21:48 采纳率: 52.4%
浏览 38
已结题

结构体变量初始化报错


#include<stdio.h>
struct stu
{
int a;
}stu1;
 stu1={5};    
int main()
{
    struct stu *p;
    p=&stu1;    
    printf("%d",p->a);
}

为什么会报错

img

  • 写回答

3条回答 默认 最新

  • qzjhjxj 2023-04-20 11:57
    关注

    赋值与初始化是两个概念,初始化不是赋值,初始化的含义是创建变量时赋予其一个初始值,而赋值的含义是把对象的当前值擦除,而已一个新值来替代。赋值是语句,而初始化是在定义中的,定义和声明不是语句,语句是要在函数中才被执行的。修改如下,供参考:

    #include<stdio.h>
    struct stu
    {
        int a;
    }stu1;     //这里是声明、定义了一个结构体和一个结构体变量
    //stu1 = { 5 };  这是赋值语句,语句是要在函数中执行的,所以这句应移动到 main()函数中才被执行。
    int main()
    {
        stu1 = { 5 };
        struct stu* p;
        p = &stu1;
        printf("%d", p->a);
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月28日
  • 已采纳回答 4月20日
  • 创建了问题 4月19日