【C语言】结构体和typedef,变量太多了怎么办,用结构体帮你管理起来

别问为什么不用#define,问就是typedef更具性价比

typedef:c语言专门为重定义类型设计的,define的使用是有瑕疵的(此处不解释)


1. 结构体的定义:

        管理变量的容器,方便变量分类。例如下面,把学生的信息统一归类起来放s1/s2中

// 写法一
struct Student { char name[10]; int age; char sex[4]; }s1;
// 写法二(常用)
struct Student
{
	char name[10];
	int age;
	char sex[4];
}s2;

        一张图带你理解别人说的结构体是自定义类型

        Student 就被叫作类型名,花括号里的就是自己定义的类型内容。但其实它还是把int,char...数组...囊括起来而已(当然也可以囊括结构体)


2. 结构体搭配typedef:

typedef unsigned int uint;
uint a;// 等效于 unsigned int a;
typedef struct Student
{
	char name[10];
	int age;
	char sex[4];
}StudentTypeDef;

StudentTypeDef s1;
StudentTypeDef s2;


3. 结构体的使用案例:

#include <stdio.h>
typedef struct Student
{
	char name[10];
	int age;
	char sex[4];
}StudentTypeDef;

int main(void)
{
	StudentTypeDef s1 = { "张三", 18, "男" };

	printf("%s %d %s\n", s1.name, s1.age, s1.sex);
	// s1.x   x为StudentTypeDef类型里的变量 
	return 0;
}

4. 数组搭配结构体的使用案例:

#include <stdio.h>
#include <string.h>
typedef struct Student
{
	char name[10];
	int age;
	char sex[4];
}StudentTypeDef;

int main(void)
{
	// 定义10名学生
	StudentTypeDef arr[10];

	// arr[0]
	strcpy(arr[0].name, "张三");
	arr[0].age = 18;
	strcpy(arr[0].sex, "男");

	// arr[1]
	strcpy(arr[1].name, "小美");
	arr[1].age = 16;
	strcpy(arr[1].sex, "女");

	printf("%s %d %s\n", arr[0].name, arr[0].age, arr[0].sex);
	printf("%s %d %s\n", arr[1].name, arr[1].age, arr[1].sex);

	// arr[下标].x   x为StudentTypeDef类型里的变量
	return 0;
}

5. 结构体的好处:

        想象一下,当你声明一个函数后,那个函数的参数就被确定了,如果你需要给这个函数增加参数,修改程序时就要改函数声明、程序中已经使用的函数要重新修改,当这个函数在程序里多处被使用,那改起来是不是很恼火。如果使用结构体传参,要增加参数,是否只需要在定义结构体那增加变量就行呢,无需大刀阔斧

  1. 给变量分类,变量多时候,管理变量很方便
  2. 不用反复修改参数个数,所以不用改声明,最重要是已经使用的函数不用修改

在下一篇文中着重介绍函数传参,结构体传参和指针运用方便理解结构体好处函数传参


作者希望所有读者能够坚持学下去,发现其中乐趣!敬请期待...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值