#include<stdio.h>
struct stu
{
int a;
}stu1;
stu1={5};
int main()
{
struct stu *p;
p=&stu1;
printf("%d",p->a);
}
为什么会报错
#include<stdio.h>
struct stu
{
int a;
}stu1;
stu1={5};
int main()
{
struct stu *p;
p=&stu1;
printf("%d",p->a);
}
为什么会报错
赋值与初始化是两个概念,初始化不是赋值,初始化的含义是创建变量时赋予其一个初始值,而赋值的含义是把对象的当前值擦除,而已一个新值来替代。赋值是语句,而初始化是在定义中的,定义和声明不是语句,语句是要在函数中才被执行的。修改如下,供参考:
#include<stdio.h>
struct stu
{
int a;
}stu1; //这里是声明、定义了一个结构体和一个结构体变量
//stu1 = { 5 }; 这是赋值语句,语句是要在函数中执行的,所以这句应移动到 main()函数中才被执行。
int main()
{
stu1 = { 5 };
struct stu* p;
p = &stu1;
printf("%d", p->a);
}