C 语言编程 — 数据类型的别名
2020-04-04 13:31 云物互联 阅读(379) 评论(0) 编辑 收藏 举报目录
前文列表
《程序编译流程与 GCC 编译器》
《C 语言编程 — 基本语法》
《C 语言编程 — 基本数据类型》
《C 语言编程 — 变量与常量》
《C 语言编程 — 运算符》
《C 语言编程 — 逻辑控制语句》
《C 语言编程 — 函数》
《C 语言编程 — 高级数据类型 — 指针》
《C 语言编程 — 高级数据类型 — 数组》
《C 语言编程 — 高级数据类型 — 字符串》
《C 语言编程 — 高级数据类型 — 枚举》
《C 语言编程 — 高级数据类型 — 结构体与位域》
《C 语言编程 — 高级数据类型 — 共用体》
《C 语言编程 — 高级数据类型 — void 类型》
typedef
在 C/C++ 编程语言中,typedef
关键字用来为特定的数据类型取一个别名,或者将其称之为 “定义了一种新的数据类型”。无论如何,其最终的目的是为了使源代码更易于阅读和理解。它通常用于简化声明复杂的数据类型组成的结构 。
- 创建 BYTE 作为无符号单字符类型的别名
typedef unsigned char BYTE;
// 使用自定义的数据类型 BYTE 来定义无符号单字符类型变量
BYTE b1, b2;
- 创建函数指针 PFI 的别名
typedef int (*PFI)(char *, char *);
也可以使用 typedef 来为自定义的数据类型取一个新的名字,例如:可以对结构体使用 typedef 来定义一个新的别名(数据类型),然后使用这个新的数据类型来直接定义结构变量:
#include <stdio.h>
#include <string.h>
typedef struct BOOKS {
char title[50];
char author[50];
char subject[100];
int id;
} MyBook;
int main() {
MyBook book1;
strcpy(book1.title, "C");
strcpy(book1.author, "Runoob");
strcpy(book1.subject, "C");
book1.id = 123;
printf("Book's title: %s\nauthor: %s\nsubject: %s\nid: %d\n", book1.title, book1.author, book1.subject, book1.id);
return 0;
}
关键字 typedef 和预处理器指令 #define 的区别
#define 是 C 的预处理器指令,也称之为 C 指令,用于为各种数据类型定义别名,与关键字 typedef 类似,但是它们有以下几点不同:
- typedef 仅限于自定义数据类型标识符的别名,#define 不仅可以为数据类型定义别名,也能为实际的数值定义别名。
- typedef 是由编译器处理的,#define 语句是由预处理器进行处理的。
#include <stdio.h>
/* 自定义常量 */
#define TRUE 1
#define FALSE 0
int main() {
printf( "TRUE 的值: %d\n", TRUE);
printf( "FALSE 的值: %d\n", FALSE);
return 0;
}
转载请注明作者:JmilkFan 范桂飓