typedef用法

typedef工具是一个高级数据特性,利用typedef可以为某一类型自定义名称。这方面与#define类似,但是
两者有三处不同:

  1. 与#define不同,typedef创建的符号只受限于类型,不能用于值;
  2. tyedef由编译器解释,不是预处理器;
  3. 在其受限范围内,typedef比#define更灵活;

使用typdef时要记住,typedef并没有创建任何新类型,它只是为某个已有的类型增加了一个方便使用的标签。

假设要用BYTE表示1字节的数组,只需要像定义个char类型变量一样定义BYTE,然后再定义前面加上关键字typedef即可:

typedef unsigned char BYTE;

随后便可使用 BYTE 来定义变量:

BYTE x, y[10];

该定义的作用域取决于typedef定义所在的位置。如果定义在函数中,就具有局部作用域,受限于定义所在的函数。如果定义在函数外面,就具有文件作用域。

为现有类型创建一个名称,看起来是多此一举,但是它有时的确很有用。在前面的示例中,用BYTE代 替unsigned char表明你打算用BYTE类型的变量表示数字而不是字符。使用typedef还能提高程序的可移植性。

用typedef来命名一个结构体类型的时候,可以省略该结构的标签(struct):

typedef struct
{
	char name[50];
	unsigned int age;
	float score;
}student_info;

student_info student={“Bob”, 15, 90.5};

这样使用typedef定义的类型名会被翻译成:

struct {char name[50]; unsigned int age; float score;}
student = {“Bob”, 15, 90.5};

使用typedef的第二个原因是:tyedef常用于给复杂的类型命名,例如:
把pFunction声明为一个函数,该函数返回一个指针,该指针指向一个void型。

typedef void (*pFunction)(void);
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐