# C语言结构体
## 一.结构体基本知识点:
### 1.结构体的定义:
在C语言中,结构体属于构造数据类型,它由若干成员组成,成员的类型既可以是基本数据类型,也可以是构造数据类型,而且可以互不相同。
结构体类型定义的一般格式如下:
```
struct 结构体类型名
{
类型1 成员名1;
类型2 成员名2;//这里的类型可以是int char float 等数据类型
...
类型n 成员名n;
};//注意分号,结构体本身也是一条语句,分号不能省略
```
### 2.结构体中成员定义:
其中,struct是定义结构体类型的关键字;结构体类型名必须是合法的C标识符,与其前面的struct一起共同构成结构体类型名;花括号内的内容是结构体类型所包括的结构体成员,也称为结构体成员。
举个例子,直接上代码:
```
struct student
{
//定义学生结构体
int num;//学号
char name[10];//姓名
int English,math;//成绩
};
```
注意事项:1)结构体类型定义的末尾必须有分号;
2)成员类型可以是除本身所属结构体类型外的任何已有数据类型;
3)在同一作用域内,结构体类型名不能与其他变量名或结构体类型名重名;
4)同一个结构体各成员不能重名,但允许成员名与不在结构体中的变量名,函数名相同;
5)结构体类型的作用域与普通变量的作用域相同:在函数内定义,则仅在函数内部起作用;在函数外定义,则有全局作用;
### 3.结构体嵌套结构体:
我们知道,一个较复杂的实体往往由多个成员构成,每个成员可以是C语言的基本数据类型,也可以是构造类型,当结构成员的数据类型又是结构类型时,就形成了结构类型的嵌套。
直接上代码
```
struct date
{
int year,month,day;
};
struct student
{
//定义学生结构体
int num;//学号
char name[10];//姓名
struct date birthday;//出生日期
int English,math;//成绩
};
```
注意:当要嵌套定义结构体的时候,必须先定义成员的结构,比如上面的代码,在student里定义birthday的时候,要先定义这个birthday,才可以进行嵌套。
### 4.定义结构体变量的三种常用方式:
```
#include<stdio.h>
struct student
{
int num;
char name[10];
int English, math;
};
int main()
{
struct student s1;
struct student s2;
system("pause");
return 0;
}
```
C语言规定,变量必须先定义后使用,主函数语句struct student s1,s2;就是结构体变量定义语句,定义了两个结构体变量s1和s2,其数据类型是struct student。
在C语言中定义结构体变量有三种方式
1) .单独定义
单独定义是指先定义一个结构体类型,再定义这种结构体类型的变量。
引入部分的代码便是单独定义。
注意:关键字struct和结构名student必须联合使用,它们合起来表示一个数据类型名;
2) .混合定义
混合定义是指在定义结构体时定义结构体变量。
例如:
```
struct student
{
//定义学生结构体
int num;//学号
char name[10];//姓名
int English,math;//成绩
}S1,S2;//混合定义
```
3). 无类型名定义
无类型名定义是指在定义结构体变量时省略结构体名称。
例如:
```
struct
{
//定义学生结构体
int num;//学号
char name[10];//姓名
int English,math;//成绩
}S1,S2;//定义结构体变量S1,S2
```
注意:无类型名方式只定义结构体变量,不定义结构体类型,若需要定义其他结构体变量,必须把定义过程重新写一遍。结构体变量的初始化是指在定义结构体变量时对其赋初值。
如:
```
struct student S1={101,”Li”,100,90};
```
- 空白目录
- 第一章 c语言简介
- 1 通俗地理解什么是编程语言
- 2 C语言究竟是一门怎样的语言
- 第二章 算法简介&基本语法
- 1 算法简介
- 2 C 程序结构
- 3 C 基本语法
- 第三章 数据类型
- 1 数据类型
- 2 变量
- 3 常量
- 第四章 运算符
- 1 算术运算符
- 2 关系运算符
- 3 逻辑运算符
- 4 位运算符
- 5 赋值运算符
- 6 杂项运算符(其他运算符)
- 7 c语言中的运算符优先级
- 第五章 控制流
- 1 判断语句
- 2 switch语句
- 3 循环语句
- 4 流程控制相关案例
- 第六章 指针
- 1 c语言指针概述
- 2 指针的算术运算
- 3 指针数组
- 4 指向指针的指针
- 5 传递指针给函数
- 6 从函数返回指针
- 第七章 函数
- 1 函数的语法
- 2 作用域规则
- 3 形参与实参
- 第八章 数组
- 1 C语言中的数组
- 2 多维数组
- 3 传递数组给函数
- 4 从函数返回数组
- 第九章 指针
- 1 分钟彻底理解C语言指针的概念
- 2 C语言指针变量的定义和使用
- 3 C语言指针变量的运算(加法、减法和比较运算)
- 4 C语言数组指针(指向数组的指针)
- 5 C语言字符串指针(指向字符串的指针)
- 第十章 结构体
- 第十一章 练习
- 第十二章 文件操作
- 第十三章 文件操作2