C/C++中typedef关键字的用法
typedef关键字主要用于已定义的类型起别名,以提高代码的可读性,常见的用法如下:
1、给已经定义的类型起别名
(1)给基础变量起别名
typedef unsigned char uint8
等效用法:
unsigned char cnt = 0;
uint8 cnt = 0;
(2)给结构体起别名
struct __Point2D__
{
int x;
int y;
}
// 给__Point2D__起别名Point2D
typedef __Point2D__ Point2D
// 在定义类型时直接起别名
struct __Point2D__
{
int x;
int y;
}Point2D
等效用法:
struct __Point2D__ point2d;
Point2D point2d;
2、定义数组类型(给固定长度的数组类型起别名,不推荐使用,因为定义时无需指定数组长度,影响代码可读性)
(1)定义普通数组类型
此处以定义长度为6类型为int的数组为例,正常的定义方法如下:
int array6[6];
// 数组元素赋值
array6[3] = 1;
用typedef定义后如下:
typedef int array6_t[6];
此时array6_t即可实现不指定长度的情况实现长度为6类型为int的数组的定义,具体如下:
array6_t array6;
// 数组元素赋值
array6[3] = 1;
(2)定义数组指针类型
此处以定义长度为3类型为int的数组指针为例,正常定义方法如下:
// 定义长度为3的int类型数组指针
int (* pArray3)[3];
// 定义长度为3的int类型数组
int a3[3] = {1, 2, 3};
// 将数组指针指向数组
pArray3 = &a3;
用typedef定义后如下:
typedef int (* pArray3_t)[3];
此时pArray3_t即可实现不指定长度的情况实现长度为3类型为int的数组指针的定义,具体如下:
pArray3_t pArray3;
// 定义长度为3的int类型数组
int a3[3] = {1, 2, 3};
// 将数组指针指向数组
pArray3 = &a3;
3、定义函数指针类型(给固定返回值类型与参数类型的函数指针类型起别名,在调用动态库时经常使用,推荐学习掌握)
函数指针变量定义示例如下:
int (* pFunc) (int a, int * p);
// 定义函数
int func(int a, int * p)
{
...// 函数体实现
}
// 将pFunc函数指针指向func函数
pFunc = func;
以上代码定义了一个函数指针变量pFunc,其可以指向一个返回值类型为int、第一个参数类型为int、第二个参数类型为int指针的函数,该定义比较复杂不方便重复使用,可使用typedef进行函数指针类型重定义,具体如下:
typedef int (* pFunc_t) (int a, int * p);
使用pFunc_t可实现函数指针的多次定义,如:
// 定义函数指针变量
pFunc_t pFunc;
// 将pFunc函数指针变量指向func函数
pFunc = func;
// 定义第二个函数指针变量
pFunc_t pFuncA;
原文地址:https://blog.csdn.net/ZXF_H/article/details/140521014
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!