Super explain in detail the structure of the article

A method for three definitions structure

在千锋教育学习半个多月了老师讲的很详细,在这里把我学到的跟大家分享一下.

Here Insert Picture Description

//struct 是结构体关键字  stu是结构体类型名
//使用结构体类型 必须是 struct stu
//num name  age 叫做结构体中的成员
//定义结构体类型的时候 不要给成员 赋值(重要)
//定义结构体类型的时候 并没有分配空间 所以 不能给成员赋值
struct stu
{
  int num=10;//4B
  char name[32];//32B
  int age; //4B 
};//一定要记得有;号

//结构体中的成员 拥有独立的空间(重要)

Here Insert Picture Description

#include<stdio.h>
struct stu
{
	int num;//4B
	char name[32];//32B
	int age;//4B
};

void test01()
{
	printf("sizeof(struct stu) =%d\n",sizeof(struct stu));//40B
	return;
}
int main(int argc,char *argv[])
{
	test01();
	return 0;
}

2. The definition of the structure variable

void test01()
{
	//就用结构体类型 定义一个变量
	struct stu lucy;//lucy是局部变量 lucy的成员内容不确定

	//通过结构体变量 访问 结构体中的成员 (一定要遵循成员自身的类型)
	printf("num = %d\n", lucy.num);
	printf("name = %s\n", lucy.name);
	printf("age = %d\n", lucy.age);

	//一定要遵循成员自身的类型
	lucy.num = 100;
	strcpy(lucy.name, "德玛西亚");
	lucy.age = 18;

	printf("num = %d\n", lucy.num);
	printf("name = %s\n", lucy.name);
	printf("age = %d\n", lucy.age);
	return;
}

operation resultHere Insert Picture Description

3. The structure of the initialization variable

//结构体类型的定义
struct stu
{
	
	int num;//4B
	char name[32];//32B
	int age;//4B
};

void test03()
{
	//初始化的顺序  必须和 结构体成员的 顺序一致
	struct stu lucy={100,"德玛西亚",18 };

	printf("num=%d, name=%s, age=%d\n",lucy.num,lucy.name,lucy.age);
	
	//清空结构体变量
	memset(&lucy,0,sizeof(lucy));
}

4. Get keyboard input variable structure

void test04()
{
	struct stu lucy;
	memset(&lucy, 0,sizeof(lucy));

	printf("请输入num name age:");
	//&lucy.num 取的是num成员地址  
	scanf("%d %s %d",&lucy.num, lucy.name , &lucy.age);
	
	printf("num=%d, name=%s, age=%d\n",lucy.num,lucy.name,lucy.age);

}

5. The structure assignment between variables

void test05()
{
	struct stu lucy={100,"小法", 18};
	struct stu bob;

	//需求 将lucy的值 赋值 bob
	//方式一:逐个成员赋值
	//bob.num = lucy.num;
	//strcpy(bob.name,lucy.name);
	//bob.age = lucy.age;

	//方法二:相同类型的结构体变量 可以直接赋值(推荐)
	//bob = lucy;
	
	//方法三:方法二的底层实现
	memcpy(&bob,&lucy,sizeof(struct stu));

	printf("num=%d, name=%s, age=%d\n",bob.num,bob.name,bob.age);
}

6. The array of structures

Here Insert Picture Description

void test06()
{
	struct stu arr[5]={
		{100,"小法",18},
		{101,"德玛西亚",19},
		{102,"盲僧",20},
		{103,"快乐风男",30},
		{104,"提莫",8}
	};
	int n = sizeof(arr)/sizeof(arr[0]);
	int i=0;

	for(i=0;i<n;i++)
	{
		printf("num=%d, name=%s, age=%d\n",arr[i].num,arr[i].name,arr[i].age);
	}
}

The result:
Here Insert Picture Description
Case: define an array of structures to obtain keyboard input averaging age

void test07()
{
	struct stu arr[5];
	int n = sizeof(arr)/sizeof(arr[0]);
	int i=0;
	int sum = 0;

	memset(arr,0,sizeof(arr));//清空整个数组

	printf("请输入%d个学生的信息\n", n);
	for(i=0;i<n;i++)
	{
		scanf("%d %s %d", &arr[i].num, arr[i].name, &arr[i].age );
	}

	for(i=0;i<n;i++)
	{
		sum += arr[i].age;
	}
	printf("平均年龄为%d\n",sum/n);
}

operation result:
Here Insert Picture Description

Sorting an array structure

void test09()
{
	struct stu arr[5];
	int i=0,j=0;
	int n = sizeof(arr)/sizeof(arr[0]);
	memset(arr,0,sizeof(arr));//整个数组 清0
	
	//获取键盘输入
	printf("请输入%d个学生信息\n",n);
	for(i=0;i<n;i++)
	{
		scanf("%d %s %d",&arr[i].num, arr[i].name, &arr[i].age);
	}

	//根据学号 排序
	for(i=0;i<n-1;i++)
	{
		for(j=0;j<n-i-1;j++)
		{
			if(arr[j].num < arr[j+1].num)//按照num的大小排序
			{
				struct stu tmp;
				tmp = arr[j];
				arr[j]=arr[j+1];
				arr[j+1]=tmp;
			}
		}
	}

	//遍历
	printf("---------------\n");
	for(i=0;i<n;i++)
	{
		printf("%d %s %d\n",arr[i].num, arr[i].name,arr[i].age);
	}
}

operation result:
Here Insert Picture Description

Released three original articles · won praise 5 · Views 256

Guess you like

Origin blog.csdn.net/weixin_43288201/article/details/104498718
Recommended