天天看点

c语言typedef编程,C语言typedef关键字学习

typedef关键字用来给现有数据类型创建别名。

typedef int size_t;

所以下面的两个定义其实完全相同。

size_t size;

int size;

咦,下面这样定义一个size_t的宏是不是也能达到一样的效果呢?

#define size_t int

在这里,确实define一个数据类型宏能达到同样的目的。

但是typedef和define相比:

define只会在预编译阶段进行简单的替换操作;

typedef则会在编译阶段进行数据类型检查。

所以相比于define,更推荐使用typedef来为现有数据类型创建新的类型别名。

typedef关键字的作用有:

1. 创建易于记忆的类型别名

typedef int size;

2. 对操作系统提供的数据类型进行封装,提供系统无关的数据类型别名。

这样可以写出不依赖于操作系统的应用程序,让应用程序在不同系统之间的移植变得更简单了。

3. 使用typedef可以让callback函数的原型定义变得更简单。

如下定义了一个函数指针的原型是有两个参数,返回值是int类型。

typedef int (*pfunc)(int size, void* pvalue);

关于typedef和const两个关键字结合使用的案例分析。

typedef char* pstr;

char str[10] = "112345";

const pstr p1 = str;

p1++;

如果代码这样写,那么在编译阶段就会报错。

这是因为按照const的修饰规则,它修饰的是pstr这种数据类型的变量p1;

而p1是一根指针,用const修饰了就意味着这个指针不能随便乱动了,

所以编译器才会报错。

通过这个案例,也恰恰说明了typedef和使用define的区别:

typedef不是在预编译阶段做简单的替换动作;

typedef定义了一个新的数据类型,对编译器而言pstr就是一种数据类型。

推荐阅读:

c语言typedef编程,C语言typedef关键字学习