一个简单的C语言问题(结构体方面的)
{之前发过一次,排版错了,重新发}
最近在复习学过的C语言,在练习结构体的时候遇到了一个小问题:
先上代码:
#include<stdio.h>
int main(void)
{
struct Plan
{
int Number;
char Name[20];
char StudentID[20];
float Grades;
};
struct Plan Plan1, Plan2;
Plan1 = { 1,"LeeCookies","2015220902026",100 };
Plan2 = Plan1;
printf("%d\n", Plan2.Number);
printf("%s\n", Plan2.Name);
printf("%s\n", Plan2.StudentID);
printf("%.0f\n", Plan2.Grades);
return 0;
}
在把结构体放在main函数当中的时候,按照上面的写法,在初始化Plan1的时候就不会提示错误;
但是,把结构体放在头文件当中,再按照相同的方式对Plan1进行声明和初始化,就会提示应输入表达式;
代码如下:
#include<stdio.h>
#include"C-2.h"
int main(void)
{
struct Plan Plan1, Plan2;
Plan1 = { 1,"LeeCookies",100,"2015220902026" };
Plan2 = Plan1;
printf("%d\n", Plan2.Number);
return 0;
}
上面的代码,在Plan1后会提示:应输入表达式;
其中:
“C-2.h”的内容:
#include<stdio.h>
struct Plan
{
int Number;
char Name[20];
float Grade;
char StudentID[20];
};
对代码做如下改动:
如下代码:
#include<stdio.h>
#include"C-2.h"
int main(void)
{
struct Plan Plan2;
struct Plan Plan1 = { 1,"LeeCookies",100,"2015220902026" };
Plan2 = Plan1;
printf("%d\n", Plan2.Number);
return 0;
}
在这种情况下,如果立即声明并且在声明的同时进行初始化,就不会提示错误;
请问有谁知道怎么回事吗?