关于结构体变量非定义时初始化问题
C语言是否规定对结构体变量的初始化只能在定义时进行?
那为何在VS2013下DEBUG如下代码没有报错?
#include
#include
int main(void)
{
struct stu {
int num;
char name[20];
} s, ss, sss;
sss = { 1, "Leonard" }; //非定义时初始化
s.num = 1; strcpy_s(s.name, "Tyler");
ss.num = 1; strcpy_s(ss.name, "Jason");
printf("s.num = %d, s.name = %s\n", s.num, s.name);
printf("ss.num = %d, ss.name = %s\n", ss.num, ss.name);
printf("sss.num = %d, sss.name = %s\n", sss.num, sss.name);
getchar();
return 0;
}
难道是因为C++和C不同吗?
------解决思路----------------------
在C++中不是叫初始化,而是结构体整体赋值吧。
------解决思路----------------------
sss = { 1, "Leonard" };会报错~