【C语言】结构体

文章介绍了C语言中结构体的概念,用于组合不同类型的数据。结构体可以通过struct关键字定义,包括成员变量如姓名、学号和成绩。typedef可以用来重定义结构体类型名,简化使用。文章提到了结构体变量的定义方式,以及成员的访问和赋值方法,包括逐一赋值和整体赋值。还指出结构体在内存中的存储可能会有缝隙。

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

一、结构体

数组是一组具有相同类型的数据的集合,当我们需要不同类型的一组数据时,例如成绩登记表:姓名(字符串),学号(整数),成绩(小数)等,类型不一样不能用数组存放。

1.1结构体定义

struct 结构体名{
    结构体所包含的变量或数组
};

例如:student为结构体名,它包含了 3个成员,分别是 name、num、score。

struct student{
    char *name;  //姓名
    int num;  //学号
    float score;  //成绩
};

如果觉得结构体名字太繁琐,也可以如下:stu是typedef重定义结构体的类型名。

typedef struct student
{
    char *name;   //姓名
    int num;      //学号
    float score;  //成绩(这是一个嵌套结构体类型)
}stu;

注意:
1、若结构体声明在mian函数之外,那结构体变量是一个全局变量 

2、结构体声明结束的时,千万不要忘记{}后面有一个分号

3、结构体成员变量也可以是另一个结构体类型,这种用法被称为:嵌套结构体。(后面讲)

1.2结构体变量

结构体是一个数据类型,那就可以去定义变量。

struct student stu1, stu2; //变量stu1, stu2都是stu类型,由3个成员组成

也可以直接定义结构体时定义变量。

struct student{
    char *name;  //姓名
    int num;  //学号
    float score;  //成绩
}stu1, stu2;

注意:

理论上来说结构体里的成员存储位置是连续的,1+4+4=9字节

namenumscore

但实际编译过程中可能存在缝隙,1+4+2+4=10字节

namenumscore

1.3成员获取和赋值

数组使用下标[ ]获取单个元素,结构体使用点号.获取单个成员。一般格式为:

结构体变量名.成员名;

可以逐一赋值: 

#include <stdio.h>
int main()
{
   struct student{           //局部变量
        char *name;   //姓名
        int num;      //学号
        float score;  //成绩
    } stu1;
    
   //给结构体成员赋值
    stu1.name = "Tom";
    stu1.num = 12;
    stu1.score = 136.5;
   
   //读取结构体成员的值
    printf("%s的学号是%d,成绩是%.1f!\n",stu1.name, stu1.num, stu1.score);
    return 0;
}

可以整体赋值:

   struct student{           //局部变量
        char *name;   //姓名
        int num;      //学号
        float score;  //成绩
    } stu1 = { "Tom", 12, 136.5 };
    

注意:

结构体是一种自定义的数据类型,是创建变量的模板,不占用内存空间;结构体变量才包含了实实在在的数据,需要内存空间来存储。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值