结构体数组
直接对比两个代码,分别进行结构体变量初始化,整体复制,以及修改变量
1 这个代码是创建了两个结构体变量student1,student2
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
struct Stu {
char name[20];
double height;
char sex;
char* talk;
};
void print(struct Stu* Str) {
printf("name:%s\n", Str->name);
printf("height:%f\n", Str->height);
printf("sex:%c\n", Str->sex);
printf("talk:%s\n", Str->talk);
}
int main() {
char arr[20] = "I'm 李华";
char arr1[20] = "I'm 飞喋";
struct Stu student1 = { "李华",'1.8','Y',arr };
struct Stu student2;
//student2 = { "李华",'1.8','Y',arr };//当创建了结构体变量后,就不能整体赋值了
//memcpy(&student2, &student1, sizeof(struct Stu));//直接将student1的结构体变量值赋给sstudent2
//student2 = student1;//直接将student1的结构体变量值赋给sstudent2
//print(&student1);
//print(&student2);
// 结构体初始化后,只能一个一个修改元素
strcpy(student2.name, "飞喋");
student2.height = 1.6;
student2.sex = 'X';
student2.talk = arr1;
print(&student1);
print(&student2);
getchar();
return 0;
}
2 这个代码是创建了结构体数组students[2]
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
struct Stu {
char name[20];
double height;
char sex;
char* talk;
};
void print(struct Stu* Str) {
printf("name:%s\n", Str->name);
printf("height:%f\n", Str->height);
printf("sex:%c\n", Str->sex);
printf("talk:%s\n", Str->talk);
}
int main() {
char arr[20] = "I'm 小明";
char arr1[20] = "I'm 小红";
char arr2[20] = "I'm 飞喋";
struct Stu students[2] = {
{"小明",1.8,'Y',arr},
{"小红",1.8,'X',arr1}};
print(&students[0]);
print(&students[1]);
//结构体数组本质上还是数组,除了初始化,不能再次整体赋值
//student[0] = { "李华",'1.8','Y',arr };
//直接将student1的结构体变量值赋给sstudent2
students[1] = students[0];
memcpy(&students[1], &students[0], sizeof(struct Stu));
print(&students[0]);
print(&students[1]);
strcpy(students[0].name, "飞喋");
students[0].height = 1.6;
students[0].sex = 'X';
students[0].talk = arr2;
print(&students[0]);
print(&students[1]);
getchar();
return 0;
}