在《C语言中文网——C语言入门教程 / 结构体、位运算以及其他》一文中
http://c.biancheng.net/cpp/html/88.html
作者在结尾说:
“不过整体赋值仅限于定义结构体变量的时候,在使用过程中只能对成员逐一赋值,这和数组的赋值非常类似。”
这是错误的,验证程序如下:
#include <stdio.h>
int main(){
//struct{
// char *name; //姓名
// int num; //学号
// int age; //年龄
// char group; //所在小组
// float score; //成绩
//} stu1;
struct{
char *name; //姓名
int num; //学号
int age; //年龄
char group; //所在小组
float score; //成绩
} stu1, stu2 = { "Tom", 12, 17, 'A', 136.5 }; //仅限在定义结构体的时候整体赋值
//给结构体成员赋值
//stu1.name = "Tom"; //在使用结构体时只能逐个赋值,不能再整体赋值
//stu1.num = 12;
//stu1.age = 18;
//stu1.group = 'A';
//stu1.score = 136.5;
stu1 = { "Li", 12, 19, 'A', 136.5 }; // --------验证程序段--------
//读取结构体成员的值
printf("%s的学号是%d,年龄是%d,在%c组,今年的成绩是%.1f!\n", stu1.name, stu1.num, stu1.age, stu1.group, stu1.score);
return 0;
}
依然能运行出正确的结果,不需要逐个赋值。