[ 基本难度系数 ]:★★☆☆☆
一、结构体基本概念和定义
C语言提供了众多的基本类型,但现实生活中的对象一般都不是单纯的整型、浮点型或字符串,而是这些基本类型的综合体。比如一个学生,典型地应该拥有学号(整型)、姓名(字符串)、分数(浮点型)、性别(枚举)等不同侧面的属性,这些所有的属性都不应该被拆分开来,而是应该组成一个整体,代表一个完整的学生。
在C语言中,可以使用结构体来将多种不同的数据类型组装起来,形成某种现实意义的自定义的变量类型。结构体本质上是一种自定义类型。
- 结构体的语法:
结构体标签: 用来区分各个不同的结构体。
成员: 是包含在结构体内部的数据,可以是任意的数据类型。
- 结构体的定义:
struct 结构体标签
{
成员1;
成员2;
...
}; // 此处有;号
- 示例代码:
#include <stdio.h>
// 自定义结构体类型
// (1)、普通的结构体定义
// 1、学生结构体
struct student // 结构体标签:用来区分各个不同的结构体的
{
char name[128]; // 成员:包含在结构体内存的数据,可以是任意的类型(包括结构体本身、函数指针等)
char phone[12];
int id;
int gender;
int class;
int score;
int height;
int weight;
int age;
}; // 此处一定要加;号
// 2、数据节点结构体
struct data_node // 结构体标签:用来区分各个不同的结构体的
{
int a;
int b;
double c;
};
// (2)、使用typedef给结构体取别名
typedef struct
{
char name[128];
char phone[12];
int id;
int gender;
int class;
int score;
int height;
int weight;
int age;
}stu, *stu_p; // 你可以在此处写这个结构体的别名,没有结构体标签,意味着你只能够使用此处提供的结构体变量
// (3)、二合一法
typedef struct data_node2
{
char name[128];
char phone[12];
int id;
int gender;