大家在初次的学习的时候,可能对typedef和define的区别认识不是很透彻。大部分人会认为这是两个功能很接近的语法
但是它们之间存在一定的差别,下面的例子有助于你的理解
以下是一段示例程序,将帮助你的理解:
#include "stdio.h"
//session 1:
typedef int banana;
#define peach int
//session 2:
typedef char *char_ptr;
#define int_ptr int *
int main(int argc, char* argv[])
{
printf("Hello World!/n");
//session 1:typedef看成是一种彻底的封装类型,在声明之后不能再往里面
//增加别的东西。但是define 可以。
unsigned peach i;//这是正确的在 define 的 peach 之前增加unsigned 修饰
//unsigned banana j;//这是错误的,在typedef 封装之后的 banana 之前
//增加 unsigned 修饰
//session 2: define 和 typedef 在连续几个变量的声明中有巨大的差别
//typedef定义的类型能够保证声明中所有的变量均为同一种类型
//define 却无法保证
int_ptr chalk, cheese;
char_ptr Bentley, Rolls_Royce;
//conclusion : define 和 typedef 有一定的差别
//差别1:typedef看成是一种彻底的封装类型,在声明之后不能再往里面
//增加别的东西。但是define 可以
//差别2:typedef定义的类型能够保证声明中所有的变量均为同一种类型
//define 却无法保证
return 0;
}