C语言入门Day_26 结构体

目录

前言:

1.结构体的定义 

2.结构体的使用

3.易错点

4.思维导图 


前言:

变量只能表示单一的属性,比如用int去表示一个年龄,用float去表示一个身高或一个体重,一个字符串/字符数组去表示一个性别或一个名字。

int tony_age = 18;
float tony_height = 172.0;
float tony_weight = 74.0;

而真实世界里面的事物往往有多个属性。比如一个人它既有年龄,身高,体重,也有名字,性别,

在C语言中我们使用一种特殊的数据结构来表示它,它就叫做struct结构体)。

1.结构体的定义 

1.1

truct又叫结构,或者结构体,往往包含多个不同数据类型的变量。

下面我们来看一看一个struct的定义:

struct People
{
    char name[20]; 
    int age;     
    float height;   
    float weight;
}; 

1.struct关键字,声明这是一个struct结构体

struct

2.struct名,又叫结构名

People

3.struct中的第一个成员,一个字符数组name

char name[20];

4.struct中的第二个成员,一个整型变量int

int age;

struct People
{
    char name[20]; 
    int age;     
    float height;   
    float weight;
}; 

5.struct中的第三个成员,一个浮点型变量height

float height;

6.struct中的第四个成员,一个浮点型变量weight

float weight;

7.结构中的成员需要用花括号{}括起来

{

}

1.2

我们来自己定义一个结构体Book,它有三个成员,字符数组name,整型页数pages,浮点型价格price。

struct Book
{
    char name[20]; 
    int pages;     
    float price;   
};  

 1.先填入结构体关键字struct

 2.再填入结构体的名字Book

 3.然后填入花括号{}

4.分别填入三个不同成员的数据类型

定义了一个struct结构体以后,我们就可以用它来定义一个结构体变量,这个结构体变量的数据类型当然就是这个我们定义好的struct了。

1.3

我们来看看如何定义一个结构体变量:

struct People
{
    char name[20]; 
    int age;     
    float height;   
    float weight;  
}; 
struct People people_a;
struct People people_b;

1.结构体的定义

struct People { }

2.用结构体People声明一个变量people_a

3.声明变量也需要用到结构体关键字struct

4.结构体的名字People

5.用结构体People声明的变量people_b

1.4

我们也可以使用下面的方式来定义一个结构体变量,在结构体的末尾加上变量的名字。但我们还是推荐上面这种,代码更清晰,理解成本也会更低一点。 

struct Book
{
  char name[20]; 
  int pages;   
  float price;  
} book_a;  

1.5

完成结构体和结构体变量的定义以后,我们就可以开始对它进行赋值和使用

首先是赋值

struct People
{
    char name[20]; 
    int age;     
    float height;   
    float weight;  
}; 
struct People people_a;
people_a = {"Liming", 19, 178.0, 75.0};

1.结构体的定义

struct People{}

2.用定义好的结构体People来声明一个变量people_a

struct People people_a;

3.给变量进行赋值

people_a = {"Liming", 19, 178.0, 75.0};

struct People
{
    char name[20]; 
    int age;     
    float height;   
    float weight;  
}; 
struct People people_a;
people_a = {"Liming", 19, 178.0, 75.0};

4.第一个给变量name赋值"Liming"

5.第二个给变量age赋值19

6.第三个给变量height赋值178.0

7.第四个给变量weight赋值75.0

1.6

需要注意的是,我们是给struct的成员按照顺序,挨个赋值的。 

struct Book
{
    char name[20]; 
    int pages;     
    float price;   
};  
struct Book book_a;
book_a
book_a = {"ABC", 100, 15.0};

1.我们来给结构体Book定义的变量进行一次赋值,注意对应的顺序,先填入变量名book_a

代码编辑器。

2.然后填入赋值符号=和花括号{}

3.依次填入三个结构体成员变量的数值,第一个是"ABC",注意数据类型的对应:

4.然后是pages的值,100:

5.最后是浮点变量price的值15.0:

到这里我们就完成了一个结构体的定义,结构体变量的声明,和结构体变量的赋值了。

2.结构体的使用

2.1

前面我们更多在讲解语法细节上面。需要注意的是,struct的定义需要在main函数前面(外部),就像函数的定义一样。

除了一次性给全部结构体成员进行赋值以外,我们也可以根据需要给单个结构体变量进行赋值。

2.2

这是一个期末考试成绩单的结构体Record,我们来给它单个成员进行赋值: 

struct Record
{
    float yuwen;
    float shuxue;
    float yingyu;
};
int main() {
    struct Record record_2023;
    record_2023.yuwen = 99.5;
    record_2023.shuxue = 100.0;
    record_2023.yingyu = 98.5;
}

1.定义结构体Record

struct Record{}

2.声明一个结构体变量record_2023

struct Record record_2023;

3.给结构体成员变量yuwen赋值99.5

record_2023.yuwen = 99.5;

struct Record
{
    float yuwen;
    float shuxue;
    float yingyu;
};
int main() {
    struct Record record_2023;
    record_2023.yuwen = 99.5;
    record_2023.shuxue = 100.0;
    record_2023.yingyu = 98.5;
}

4.给结构体成员变量shuxue赋值100.0

record_2023.shuxue = 100.0;

5.给结构体成员变量yingyu赋值98.5

ecord_2023.yingyu = 98.5;

6.main函数,结构体的定义需要放在main函数以外

int main () {}

7.我们注意到它的访问方式是通过点.来实现的

2.3

结构体变量访问自己成员是通过英文句号.来实现的:

​
record_2023.yuwen = 99.5;

对结构体里面单个成员变量进行赋值访问的方式都是一样的,通过英文符号.来实现

2.4

struct Record
{
    float yuwen;
    float shuxue;
    float yingyu;
};
int main() {
    struct Record record_2025 = {90.0, 93.5, 98.0};
    printf("%.1f\n", record_2025.yuwen);
    printf("%.1f\n", record_2025.shuxue);
    printf("%.1f\n", record_2025.yingyu);
}

1.定义一个结构体Record

struct Record { };

2.定义一个结构体变量,并进行初始化赋值

struct Record record_2025 = {90.0, 93.5, 98.0};

3.打印输出这个结构体变量的三个数值

printf("%.1f\n", record_2025.yuwen);

printf("%.1f\n", record_2025.shuxue);

printf("%.1f\n", record_2025.yingyu);

4.同样的,我们通过英语句号.来访问结构体的成员

2.5

指针,作为C语言最灵活的机制(有人也说指针是C语言的精髓所在),也可以用来指向一个结构体,我们来看看:

定义一个某种结构体的指针,并指向一个变量,然后访问它:

struct Record
{
    float yuwen;
    float shuxue;
    float yingyu;
};
int main() {
    struct Record record_2025 = {90.0, 93.5, 98.0};
    struct Record *sp1;
    sp1 = &record_2025; 
    printf("%f\n", sp1->yuwen);
    sp1->yuwen = 100.0;
    printf("%f\n", sp1->yuwen);
}

1.定义一个Record结构的指针

struct Record *sp1;

2.把指针指向结构体变量record_2025

sp1 = &record_2025;

3.打印结构体变量yunwen

printf("%f\n", sp1->yuwen);

4.指针去访问一个结构体成员使用->符号

5.以及对于结构体来说,不需要使用指针运算符*

sp1->yuwen

2.6

一个结构体的指针和一个普通变量的指针,在使用上最大的区别就是,普通变量的指针需要使用指针运算符*来访问,结构体的指针则不需要

使用结构体变量访问成员的时候,是用英文句号.

使用结构体指针来访问成员的时候,是用减号+右箭头符号->

2.7

我们自己来写一遍用结构体指针访问成员的代码

struct Record record_2025 = {90.0, 93.5, 98.0};
struct Record *sp1;
sp1 = &record_2025; 
printf("%.1f\n", sp1->yuwen);
sp1->yuwen = 100.0;
printf("%.1f\n", sp1->yuwen);

1.填入结构体指针访问成员的符号->

2.填入指针访问成员的代码:

sp1->yuwen

3.易错点

结构体定义和声明后面记得不要丢掉分号!

输出每个结构体成员时应该对应该类型的格式符。

4.思维导图 

最后我想说的是:

 在撰写这篇文章时,我参考了《白纸编程》这个app的观点和思想,我要感谢他们对我的启发和帮助。

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值