4月从零学习C语言(第24天)——typedef_c语言 typedef冲突,2024年最新成功从小公司跳槽

47 阅读2分钟

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; }


运行结果:![在这里插入图片描述](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/727714031a0d468d8688039db75799a2~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg5py65Zmo5a2m5Lmg5LmL5b-DQUk=:q75.awebp?rk3s=f64ab15b&x-expires=1771857187&x-signature=j6JNvIHzSJjIp%2F7e5iff37fLhGE%3D)


### 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; }


运行结果:![在这里插入图片描述](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/5b6b9e0f74194e57a179a991cf5fdb7c~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg5py65Zmo5a2m5Lmg5LmL5b-DQUk=:q75.awebp?rk3s=f64ab15b&x-expires=1771857187&x-signature=JgIyZIuhQJW2go376TUvcwHbqRs%3D)


### typedef vs #define


**#define** 是 C 指令,用于为各种数据类型定义别名,与 **typedef** 类似,但是它们有以下几点不同:


* **typedef** 仅限于为类型定义符号名称,**#define** 不仅可以为类型定义别名,也能为数值定义别名,比如您可以定义 1 为 ONE。
* **typedef** 是由编译器执行解释的,**#define** 语句是由预编译器进行处理的。



![img](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/673bc4d7d7534a3da70fac60dad432ec~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg5py65Zmo5a2m5Lmg5LmL5b-DQUk=:q75.awebp?rk3s=f64ab15b&x-expires=1771857187&x-signature=SdHNBp5XlKGTneIs%2BO6b1PH%2BCkI%3D)
![img](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/5c0f7a42d845494e9b30fcaa87aebc93~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg5py65Zmo5a2m5Lmg5LmL5b-DQUk=:q75.awebp?rk3s=f64ab15b&x-expires=1771857187&x-signature=Q8pAigNooMX3a5UledKjRfWPezQ%3D)

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化的资料的朋友,可以添加戳这里获取](https://gitee.com/vip204888)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**