一.什么是结构体变量
结构体变量是多种不同的类型变量的组合。
结构体可以用在哪些场景当中呢?
比如我们想定义一个变量来存放图书书名,图书作者,图书售价,出版日期等信息,大家脑海里面想到的是不是是数组呢。但是数组存放的是相同类型的多个元素,很显然,这里的图书书名,图书作者,图书售价,出版日期类型是不同的。图书书名,图书作者需要使用char类型,而图书售价,出版日期需要使用int类型。
这时候就可以使用结构体。
二.结构体的声明
注意:结构体的声明只是一个创建了一个描述,并不会在内存中分配空间
语法格式:
struct 结构体名称
{
结构体成员1;
结构体成员2;
...
};
举例:
struct book
{
char title[128];
char author[128];
float price;
unsigned int date;
};
三.定义结构体类型变量
注意:定义结构体类型变量会在内存中分配空间
语法格式:struct 结构体的名称 结构体变量名
举例:
写法1:
struct book mybook
写法2:
struct book
{
char title[128];
char author[128];
float price;
unsigned int date;
}mybook; //这种写法是全局变量
四.初始化结构体变量
初始化方法1:
struct book mybook = {
"mybook",
"me",
20.9,
20200101,
};
初始化方法2:
struct book mybook = {
.title = "mybook",
.price = 29,
};
五.访问结构体变量中的成员
使用.运算符访问
举例:
book.date
六.综合例子
#include <stdio.h>
struct book
{
char title[128];
char author[128];
float price;
unsigned int date;
};
int main(void)
{
//struct book mybook;
/*
struct book mybook = {
"mybook",
"me",
20.9,
20200101,
};
*/
struct book mybook = {
.title = "mybook",
.price = 29,
};
mybook.price = 22.5;
printf("mybook.price is %.1f\n",mybook.price);
printf("mybook.title is %s\n",mybook.title);
return 0;
}