结构体、枚举、typedef啥的
1、全局变量:定义在函数外部变量
1、定义格式:变量类型 变量名称 = 值
2、声明 变量类型 变量名称
注意点:
1、全局变量不可以重复定义,可以重复声明
作用域:从定义那一行开始直到文件结束,若有声明的话只要是提前声明在整个项目中任意位置都可以使用
生命周期:从程序启动到程序退出
存储位置:全局区
2、结构体:用来存放多个不同数据类型的数据,若相同数据类型可以表示特定含义也可以使用结构体
特点:先定义结构体类型然后定义结构变量
如何定义一个结构体类型
格式: struct 结构体类型名称{
成员类型 成员名称;
....
};
// 定义类型的时候,一般首字母都要大写
struct Person{
int age;
char* name;
};
初始化:
1、先定义结构体变量然后初始化
struct Person p;
1、一个一个的成员进行初始化
p.age = 10;
p.name = "hlw";
2、整体初始化,需要类型强转
p = (struct Person){10,"hlw"};
2、定义结构体变量的同时进行初始化
1、按照结构体定义时成员的顺序进行初始化
struct Person p = {10,"hlw"};
2、定义结构体的同时为指定的成员进行初始化
struct Person p = {.name = "hlw"};
结构体多种定义方式
1、先定义结构体类型然后定义结构体变量
2、定义结构体类型的同时定义结构体变量
struct Person{
int age;
} p,p1={10};
3、定义匿名的结构体类型的同时定义结构体变量
struct {
int age;
} p;
1、结构体类型不可以重复使用
结构体类型的作用域
1、定义在函数内部它与局部变量相同
2、定义在函数外部它与全局变量类似
1、全局变量可以声明,结构体不可以声明
2、全局变量是整个项目有效,结构体定义仅在本文件有效
结构体数组:存储结构体的数组
结构体指针:指针向结构体的指针
struct Person* pp = &p;
pp->age = 10;
结构体与函数
1、结构体变量作为函数参数传递是值传递(成员拷贝)
2、结构体指针作为函数参数传递是地址传递
枚举:当一个变量只有几个固定的取值的时候,使用枚举
作用:提高代码的可读性,方便程序员之间的交流
特点:先定义枚举类型,然后定义枚举变量
定义枚举类型的格式:
enum 枚举类型名称{
成员,
...
};
当定义枚举类型的时候,同时定义了多个常量,成员名称就是常量名称
枚举的本质是整形
枚举成员的值默认从0开始,依次递增1,我们可以为某个成员指定数值,那么从它以后所有成员都是在它的基础上递增1;
typedef : 给数据类型起别名
格式: typedef 原类型名称 新类型名称(外号)
1、基本数据类型
2、指针起别名
3、结构体类型(最多)
4、枚举类型(最多)
5、函数指针
1、全局变量:定义在函数外部变量
1、定义格式:变量类型 变量名称 = 值
2、声明 变量类型 变量名称
注意点:
1、全局变量不可以重复定义,可以重复声明
作用域:从定义那一行开始直到文件结束,若有声明的话只要是提前声明在整个项目中任意位置都可以使用
生命周期:从程序启动到程序退出
存储位置:全局区
2、结构体:用来存放多个不同数据类型的数据,若相同数据类型可以表示特定含义也可以使用结构体
特点:先定义结构体类型然后定义结构变量
如何定义一个结构体类型
格式: struct 结构体类型名称{
成员类型 成员名称;
....
};
// 定义类型的时候,一般首字母都要大写
struct Person{
int age;
char* name;
};
初始化:
1、先定义结构体变量然后初始化
struct Person p;
1、一个一个的成员进行初始化
p.age = 10;
p.name = "hlw";
2、整体初始化,需要类型强转
p = (struct Person){10,"hlw"};
2、定义结构体变量的同时进行初始化
1、按照结构体定义时成员的顺序进行初始化
struct Person p = {10,"hlw"};
2、定义结构体的同时为指定的成员进行初始化
struct Person p = {.name = "hlw"};
结构体多种定义方式
1、先定义结构体类型然后定义结构体变量
2、定义结构体类型的同时定义结构体变量
struct Person{
int age;
} p,p1={10};
3、定义匿名的结构体类型的同时定义结构体变量
struct {
int age;
} p;
1、结构体类型不可以重复使用
结构体类型的作用域
1、定义在函数内部它与局部变量相同
2、定义在函数外部它与全局变量类似
1、全局变量可以声明,结构体不可以声明
2、全局变量是整个项目有效,结构体定义仅在本文件有效
结构体数组:存储结构体的数组
结构体指针:指针向结构体的指针
struct Person* pp = &p;
pp->age = 10;
结构体与函数
1、结构体变量作为函数参数传递是值传递(成员拷贝)
2、结构体指针作为函数参数传递是地址传递
枚举:当一个变量只有几个固定的取值的时候,使用枚举
作用:提高代码的可读性,方便程序员之间的交流
特点:先定义枚举类型,然后定义枚举变量
定义枚举类型的格式:
enum 枚举类型名称{
成员,
...
};
当定义枚举类型的时候,同时定义了多个常量,成员名称就是常量名称
枚举的本质是整形
枚举成员的值默认从0开始,依次递增1,我们可以为某个成员指定数值,那么从它以后所有成员都是在它的基础上递增1;
typedef : 给数据类型起别名
格式: typedef 原类型名称 新类型名称(外号)
1、基本数据类型
2、指针起别名
3、结构体类型(最多)
4、枚举类型(最多)
5、函数指针