我们常常在某些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语言 结构体声明

如有错误之处,希望大家指正。
 

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐