char subject[100]; int book_id; } Book;
int main( ) { Book book;
strcpy( book.title, "C 教程"); strcpy( book.author, "Runoob"); strcpy( book.subject, "编程语言"); book.book_id = 12345;
printf( "书标题 : %s\n", book.title); printf( "书作者 : %s\n", book.author); printf( "书类目 : %s\n", book.subject); printf( "书 ID : %d\n", book.book_id);
return 0; }
运行结果:
### Typedef
声明新的类型的名字
* 新的名字是某种类型的别名
* 改善了程序的可读性
我们看下面一的代码片段:
typedef long int64_t; typedef struct ADate { int month ; int day; int year; }Date ; int64_t i = 100000oo0000 ; Date d = {9,1,2005};
在这段代码中我们重载了已有的类型名字,使得新名字的含义更加清晰而且具有可移植性,并且简短了复杂的名字。
### 宏定义
define,宏定义,C语言中预处理命令一种。
分为无参宏定义和带参宏定义。
无参宏定义的一般形式为:#define 宏名 [字符串](https://gitee.com/vip204888);带参宏定义的一般形式为:#define 宏名(参数表) [字符串](https://gitee.com/vip204888);
[宏定义](https://gitee.com/vip204888)的一般形式为:
宏定义: #define 标识符 常量 //注意:没有分号 终止宏: #undef 标识符
关于#define的最简单的用法:
#include <stdio.h>
#define TRUE 1 #define FALSE 0
int main( ) { printf( "TRUE 的值: %d\n", TRUE); printf( "FALSE 的值: %d\n", FALSE);
return 0; }
运行结果:
### typedef vs #define
**#define** 是 C 指令,用于为各种数据类型定义别名,与 **typedef** 类似,但是它们有以下几点不同:
* **typedef** 仅限于为类型定义符号名称,**#define** 不仅可以为类型定义别名,也能为数值定义别名,比如您可以定义 1 为 ONE。
* **typedef** 是由编译器执行解释的,**#define** 语句是由预编译器进行处理的。


**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化的资料的朋友,可以添加戳这里获取](https://gitee.com/vip204888)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**