我为什么要写这篇文章?
- 我想主要还是在于两个方面吧。第一,大一时偷懒没好好学c语言,导致功底薄弱,现在在这两个关键字上产生困惑;第二,希望把今晚想明白的地方记录下来,以便后续若有疑惑可回头查阅。
我的困惑之处?
#define ptr_c char*
ptr_c a,b;
typedef char* ptr_c;
ptr_c a; b;
- 看上边的代码,我疑惑的是:
#define与typedef的ptr_c a,b;语句为何等价出来的并不相同。
typedef 与 #define的区别
- 就在刚刚,我好像明白了这两个的区别,他们的区别就在于
typedef是给数据类型起别名,而#define是简单的替换。
typedef char* ptr_c;
#define ptr_c char*
- 好像还没说明白,我的表达能力堪忧呀,怎么说呢?应该可以这么理解,
typedef char* ptr_c;是指我新定义了一个新的数据类型ptr_c,它是一个指向char的指针,而#define ptr_c char*,是将整个代码出现的ptr_c全都用成char和*替换,替换后的用法像int* a,b;,只是定义了一个指向int型的指针和int变量。
- 综上,还是用
typedef定义数据类型比#define要好。如果在这么一个场景:我希望我用新定义数据类型来声明的变量都是指向char类型的指针,但如果我用的是#define来定义新的数据类型,就会出现只有第一个变量是指向char型的指针,而其余的变量都是char型,这是我不想要的。
写在后边