C 关键字的秘密 终

struct

C语言中的struct可看做变量的集合

struct 使用方式

方式一:

C 关键字的秘密 终_第1张图片

方式二:

C 关键字的秘密 终_第2张图片

union

union只分配最大成员的空间,所有成员共享这个空间

同一时间只能储存其中一个数据成员

所有的数据成员具有相同的起始地址

union的使用受系统大小端影响

C 关键字的秘密 终_第3张图片

C 关键字的秘密 终_第4张图片

大异小同

大端模式:数据的高位,保存在内存的低地址中;数据的低位,保存在内存的高地址中

小端模式:数据的高位,保存在内存的高地址中;数据的低位,保存在内存的低地址中

union 可用于字节数组与整型/浮点型变量间转换

C 关键字的秘密 终_第5张图片

C 关键字的秘密 终_第6张图片
enum  枚举

enum是C语言中的一种自定义类型

enum值是可根据需要自定义的整型值

定义的第一个enum值默认为0

默认情况下的enum值是在前一个定义值的基础上加1

enum类型的变量只能取定义时的离散值

C 关键字的秘密 终_第7张图片

enum中定义的值是C语言中真正意义上的常量

在工程中enum多用于定义整型常量

枚举类型VS#define

#define宏变量只是简单的进行值替换,枚举常量是真正意义上的常量

#define宏常量无法被调试,枚举常量可以

#define宏常量无类型信息,枚举常量是一种特定类型的常量

typedef

typedef用于给一个已经存在的数据类型取别名

typedef本质上不能产生新类型

typedef 重命名的类型

- 可以在typedef语句之后定义

- 不能进行unsigned和signed扩展



C 关键字的秘密 终_第8张图片

用途

1.定义别名,用作同时声明指针型的多个对象



p1、p2都是指针

p3是指针,p4没有定义数据类型

2.简易结构体

typedef struct  _tag_POINT{
     int x;
     int y;
}POINT;

POINT *p;

3.定义与平台无关的类型,易于移植
    
typedef long double REAL

陷阱

typedef char* PSTR;

const PSTR相当于char* const, const给予了整个指针常量性

typedef在语法上是一个存储类的关键字,不可与static、extern、register同时使用

存储类关键字只能指定一个

小结

struct 中的每个数据成员有独立的存储空间

union 中所有数据成员共享同一个存储空间

enum 用于定义离散值类型

enum 定义的值是真正意义上的常量

typedef 用于给类型重命名

你可能感兴趣的:(C)