我们常常在某些C语言代码中看到有时候typedef关键字和struct一起连用定义结构体,有时候只用struct关键字直接定义结构体,在此记录两者的一些用法,给自己做一个笔记,希望对大家也有所帮助。如果有些地方不对,请大家指正。
结构体
c语言中,数组是一组相同类型数据的集合,而结构体可以完成对不同数据的封装,可以是不同数据类型的集合。
简单来说,结构体就是不同类型数据或者相同类型数据的集合。
使用结构体例子:
1. 衣服信息:衣服尺寸,颜色,修长,衣长........
2. 苹果的信息:颜色,大小,是否合格...
不同结构体定义形式以及使用
对于所有形式的结构体定义,都要遵循两个最基本的原则:
1. 定义结构体之后一定要以分号结束
2. 结构体中不能定义函数
形式一:
//最基本形式
struct Student{
int number; //学号
int age;
bool gender; //性别,1女,0男
};
//单独定义结构体变量
struct Student stu1,stu2={2,3,1};
定义说明:
1. struct是数据类型说明符,指出下面定义的是结构体类型
2. Student是该结构体名称
3. number,age,gender是结构体Student包含的信息,可是相同类型,也可是不同类型
使用说明:
对于该种结构体定义,在声明结构体变量时,一定要是struct Student,不能只能使用Student
形式二:
//在定义结构体变量的同时就进行变量声明
struct Student{
int age;
int number;
bool gender;
}stu1,stu2={1,2,0};
形式三:
//不定义结构体名称,在定义结构体时直接声明结构体变量
struct {
int number;
int age;
bool gender;
}stu1,stu2;
说明:该种方法并没有定义结构体名称,不能再在后续代码中声明该结构体变量,因此只能存在stu1,stu2两个结构体变量
形式四:
typedef struct{
int number;
int age;
}Stu;
int main(){
Stu stu1={1,2};
printf("学号是%d\n",stu1.number);
printf("年龄是%d\n",stu1.age);
}
说明:
这里也没有定义结构体名称,但是通过使用typedef关键字对该未命名的结构体设置别名,因此可以使用该别名进行结构体变量声明
形式五:
//使用typedef加上struct定义结构体
typedef struct Student{
int number;
int age;
bool gender;
}Stu;
//声明结构体变量
Stu stu1,stu2;
说明:
1. typedef 用来为复杂的声明定义简单的别名,即具有数据类型重命名的作用,这里将struct Student,即结构体Student定义 一个Stu别名,后续可以使用Stu代替struct Student进行变量声明
2. 如果没有typedef关键字,后续声明变量必须使用struct Student进行声明。
另外,结构体定义中也可以进行结构体嵌套定义。
结构体变量中各个数据的使用
结构体变量.结构体中的数据项名称
struct Student stu={1,2,0};
printf("%d/n",stu.number);
可供参考的博文:
结构体(struct)_编程芝士的博客-CSDN博客_struct
(18条消息) C语言——结构体(全)_小小圆脸的博客-CSDN博客_结构体c语言
(18条消息) C 结构体 struct 详解_zhanghow的博客-CSDN博客_c结构体
(18条消息) C语言之玩转结构体1——结构体定义与声明_静晨66的博客-CSDN博客_c语言 结构体声明
如有错误之处,希望大家指正。