C语言自定义类型——结构体详解

为什么要有结构体变量?

在C语言中,我们可以使用内置类型如char、short、int、long、float、double等来表示数据,但有时仅仅使用这些内置类型是不够的。举个例子,如果我们想描述一个学生,我们需要记录他的姓名、年龄、学号、身高、体重等信息;如果我们想描述一本书,我们需要记录它的作者、出版社、定价等信息。为了解决这个问题,C语言引入了结构体这种自定义的数据类型,为程序员提供了创造适合自己需求的类型的能力。

结构体允许我们将多个不同类型的数据组合在一起,形成一个更复杂的数据结构。通过结构体,我们可以将相关的数据视为一个整体进行管理,并且可以通过结构体变量来访问和操作这些数据。例如,我们可以创建一个名为"学生"的结构体类型,包含姓名、年龄、学号、身高、体重等成员变量。然后,我们可以声明一个学生类型的结构体变量,并为其成员赋值,如"张三,18岁,学号为001,身高175cm,体重65kg"。这样,我们就能够方便地存储和操作学生的信息了。

通过使用结构体,我们可以更好地组织和管理复杂的数据,使程序更加清晰和易于理解。结构体的引入使得C语言的数据类型更加灵活,程序员可以根据自己的需求定义适合的结构体类型,从而更好地满足实际编程的需要。

什么是结构体变量?

结构体是一种数据类型,它可以组合多个值作为成员变量。每个成员变量可以是不同类型的变量,例如标量(单个值)、数组、指针,甚至可以是其他结构体。

结构体可以看作是一个容器,用于存储相关数据的集合。每个成员变量可以有自己的数据类型和名称,代表不同的信息。例如,我们可以创建一个名为"学生"的结构体,其中包含姓名(字符串类型)、年龄(整数类型)、成绩(浮点数类型)等成员变量。这样,我们就可以将学生的姓名、年龄和成绩作为一个整体进行管理。

在结构体中,每个成员变量可以具有不同的数据类型,这使得结构体非常灵活。我们可以在结构体中使用标量类型来表示单个值,如整数或浮点数;我们也可以使用数组来表示一组值,如存储学生的多门课程成绩;我们甚至可以在结构体中使用指针,指向其他的数据或对象。

通过使用结构体,我们可以更好地组织和管理复杂的数据结构,使程序更加清晰和易于理解。结构体的灵活性使得我们可以根据实际需求定义自己的数据类型,以便更好地表示和处理问题中的数据。

结构体类型的申明

结构体申明的伪代码如下:

struct tag
{
    member-list
};variable-list

其中的member-list就是结构体的成员名

variable-list就是结构体的名字

tag是结构体的标签,类似于int,char,short这样的,是一种类型名。

比如我需要创建一个学生的结构体变量,包含他的学号,姓名,年龄,身高,体重,就可以像下面这样创建:

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

int main()
{
	struct Student
	{
		char name;
		char id;
		int age;
		float height;
		float weight;
	};
	return 0;
}

通过创建一个学生的结构体变量,我们可以方便地存储和操作学生的各种信息。这个结构体变量包含了多个成员变量,每个成员变量代表了学生的不同属性。这种方式使得我们可以更加方便地访问和操作学生的信息。

使用结构体变量,我们可以将学生的姓名、年龄、成绩等信息聚合在一起,以便统一管理。这样,我们就能够更加方便地获取和修改学生的各种属性。例如,我们可以通过结构体变量来获取学生的姓名,或者更新学生的成绩。

结构体的使用使得我们能够更加灵活地处理复杂的数据结构,提高了程序的可读性和可维护性。通过创建结构体变量,我们可以轻松地组织和操作学生的信息,使得程序的逻辑更加清晰和易于理解。

结构体变量的创建和初始化

#include <stdio.h>
struct Stu
{
 char name[20];//名字
 int age;//年龄
 char sex[5];//性别
 char id[20];//学号
};
int main()
{
 //按照结构体成员的顺序初始化
 struct Stu s = { "张三", 20, "男", "20230818001" };
 printf("name: %s\n", s.name);
 printf("age : %d\n", s.age);
 printf("sex : %s\n", s.sex);
 printf("id : %s\n", s.id);
 
 //按照指定的顺序初始化
 struct Stu s2 = { .age = 18, .name = "lisi", .id = "20230818002", .sex = "⼥
 pr
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿梦Anmory

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值