ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 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}; ```