struct Student
{
int id
char name[64]
double score
}
void test1() {
struct Student s1 = { 1, "张三" , 60.0 }
printf("学生的分数:%d\n", s1.id)
printf("学生的姓名:%s\n", s1.name)
printf("学生的分数:%d\n", s1.score)
}
void test2() {
//创建结构体变量
struct Student s2 = { 2, "李二", 70.5 }
//访问结构体变量的属性
printf("学号:%d\n", s2.id)
//结构体变量属性赋值
s2.id = 3
//字符串不能重新赋值
strcpy(s2.name, "李二的")
s2.score = 100
//输出结构体属性信息
printf("学生的分数:%d\n", s2.id)
printf("学生的姓名:%s\n", s2.name)
printf("学生的分数:%f\n", s2.score)
}
void test3() {
//结构体成员赋值
struct Student s3
struct Student s4 = { 3, "张三丰", 88.9 }
//方法1:一个一个赋值
s3.id = 5
strcpy(s3.name, "梨儿")
s3.score = 100
//输出结构体属性信息
printf("学生的分数:%d\n", s3.id)
printf("学生的姓名:%s\n", s3.name)
printf("学生的分数:%f\n", s3.score)
//方法二:整体赋值(相同数据类型结构体变量之间)
s3 = s4
//输出结构体属性信息
printf("学生的分数:%d\n", s3.id)
printf("学生的姓名:%s\n", s3.name)
printf("学生的分数:%f\n", s3.score)
//方法三:memcpy内存赋值
memcpy(&s3, &s4, sizeof(struct Student))
//输出结构体属性信息
printf("学生的分数:%d\n", s3.id)
printf("学生的姓名:%s\n", s3.name)
printf("学生的分数:%f\n", s3.score)
}
void test4() {
//结构体变量的交换
struct Student s5 = { 1, "Tom", 60 }
struct Student s6 = { 2, "Jerry", 99 }
//int idTemp = s5.id
//s5.id = s6.id
//s6.id = idTemp
//char nameTemp[64]
//strcpy(nameTemp, s5.name)
//strcpy(s5.name, s6.name)
//strcpy(s6.name, nameTemp)
//double scoreTemp
//scoreTemp = s5.score
//s5.score = s6.score
//s6.score = scoreTemp
//直接交换
struct Student temp
temp = s5
s5 = s6
s6 = temp
//输出结构体属性信息
printf("学生的分数:%d\n", s5.id)
printf("学生的姓名:%s\n", s5.name)
printf("学生的分数:%f\n", s5.score)
}
void test5() {
//结构体数组
struct Student arr[5] = {
{1, "令狐冲", 70},
{2, "张三丰", 88},
{3, "左冷禅", 90},
{4, "唐小姐", 88},
{5, "三个人", 90},
}
//遍历数组输出结果
int len = sizeof(arr)/sizeof(struct Student)
for (int i = 0
{
printf("学号:%d 姓名:%s 分数:%1f\n", arr[i].id, arr[i].name, arr[i].score)
}
}
//结构体嵌套
struct Stu
{
int id
int age
}
struct Tea
{
int id
struct Stu stu
}
void test6() {
struct Tea teacher = { 1, {2, 17} }
//访问嵌套的结构体变量
printf("老师的id:%d 学生的id:%d 学生的年龄:%d\n", teacher.id, teacher.stu.id, teacher.stu.age)
}
int main() {
//test1()
//test2()
//test3()
//test4()
//test5()
test6()
system("pause")
return 0
}