结构体数组

本文通过两个代码示例展示了如何在C语言中初始化和修改结构体变量及结构体数组。首先,创建并初始化了两个结构体变量student1和student2,然后演示了如何逐个修改结构体成员。接着,展示了结构体数组的使用,包括初始化和修改数组中的元素。代码中包含了结构体的复制以及打印结构体成员的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

结构体数组

直接对比两个代码,分别进行结构体变量初始化,整体复制,以及修改变量
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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值