初识结构体

本文介绍了C语言中的结构体,包括结构体的基础知识、声明、成员类型、变量定义与初始化、成员访问以及结构体传参。结构体作为一种复杂数据类型,允许组合不同类型的变量以描述更复杂的对象,如在示例中用于描述学生信息。文中详细讲解了结构体的声明、定义、初始化方法,并讨论了结构体成员的访问方式和结构体作为参数传递的优劣。

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

结构体的声明

结构体在C语言中属于复杂数据类型。

像整型、浮点型、字符型、数组、指针等简单数据类型只能定义一些简单的数据信息,远远不能满足程序设计的需求。因为有些复杂的数据信息仅仅靠这些数据类型是无法完整描述的。比如:一个学生的信息包含了姓名、学号、年龄等。原有的数据类型都无法单独的描述“学生”这种数据类型。

为了增强C语言的数据描述能力,C语言允许开发者定义自己的数据类型。这些数据类型称为复杂数据类型。C语言对开发者定义的数据类型的复杂度没有限制。

结构体的基础知识

结构体是一些值的集合,这些值称为成员变量。结构体的每个成员可以是不同类型的变量。

当我们去描述一个对象,这个对象包含了多个成员,这些成员是不同类型的变量。比如:要开发一个电子学生档案。学生这个对象,包含了姓名、学号、年龄等不同类型的变量,那么学生就可以被称为一个结构体,姓名、学号、年龄就可以叫做成员变量。

结构体的声明

struct tag
{
   
   member-list; //结构体所包含的变量或数组
}variable-list; //variable-list 变量名列表

结构体是一种集合,它里面包含了多个变量或数组,它们的类型可以相同,也可以不同,每个这样的变量或数组都称为结构体的成员(Member)。

例如描述一个学生:

struct stu{
   
    char name[20];  //姓名
    int num;  //学号
    int age;  //年龄
    char group;  //所在学习小组
    float score;  //成绩
};

int main()
{
   
    struct Stu s;//创建结构体变量
    return 0;
}

上述代码中的struct被叫做结构体关键字,Stu被叫做结构体标签,他们两个结合起来strcut Stu叫结构体类型。而最后不可缺少的有个“;”。这里这个分号就等价于“int a;”结尾这个分号。看到这里我们不妨将对比一下。
在这里插入图片描述
在这里插入图片描述
这里strcut Stuint是等价的。

那么定义一个结构体类型要占空间吗?不占。这只是个类型,就像C语言中本来就有个int型,int有占空间吗?没有。只有用int创建一个变量时会占用空间。结构体类型也是同理,只有在创建结构体变量时会占用。

大括号后面的variable-list是做什么的呢?

struct stu{
   
    char name[20];  //姓名
    int num;  //学号
    int age;  //年龄
    char group;  //所在学习小组
    float score;  //成绩
}s1,s2,s3;//s1,s2,s3 是三个全局的结构体变量

在大括号后面创建的变量值就是全局变量。这种定义全局变量的方法叫做直接定义法,我们后面会提到。
在这里插入图片描述
如果对数据结构有一定了解的话

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值