结构体定义(c语言)

149 阅读2分钟
#include<stdlib.h>
#include<stdio.h>


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; i < len; i++)
	{
		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;
}