C/C++中typedef关键字用法总结
来源:互联网 发布:数据库系统实现英文版 编辑:程序博客网 时间:2024/05/23 19:16
首先介绍下typedef,它是一个关键字,可以理解为用于将数据类型起一个别名,但是与#define不同的是,typedef是编译期间由编译器进行处理的,而#define是一个预编译指令,是在预编译期由预处理器进行处理的。
typedef关键字有很多种用法,下面就对此进行总结下:
用于内置类型:
typedef int sizeArr;void func(int* arrNum,sizeArr n){ //sizeArr == int for(int i=0;i<n;++i){ std::cout << arrNum[i] << " "; }}一个典型的传递数组的函数,参数1接收一个数组首元素地址,参数2接收一个数组大小(元素个数),当然参数2可以用int n;代替,因为在这里sizeArr是int的别名,但是用int n;的话,可能用户在调用该函数的时候,就不是很清楚参数2接收什么东西的,而通过typedef定义一个别名,这样用户就能一目了然,知道参数2是接收一个数组大小的。
又如以下代码:
typedef unsigned char BYTE; unsigned char Temp; //#1 BYTE Temp1; //#2#1和#2的定义是等价的,当需要频繁定义unsigned char类型时,#2比#1定义方便很多,并且在代码中,可读性#2肯定也是比#1好的。另外通过typedef定义的别名,也增加了移植性,例如换了一个环境后,可能需要对代码中的所有int替换成long或其他类型,可能需要修改很多处,如果手动替换是非常费人力的,而且还可能出错。当通过typedef定义int别名后,代码中使用该别名,那么需要修改的时候,只需修改typedef定义的这一处即可。
另外当需要定义数个指针变量的时候,可能刚学C/C++不久的同学由于习惯性int a,b,c;这么定义多个变量,那么定义指针的时候可能也这么写:
int* p1,p2;实际上这是定义一个指向int类型的指针变量(p1)和一个int类型的变量(p2),p2并不是指针变量。
那么typedef可以这么定义:
typedef int* pNum;pNum p1,p2;将pNum作为int*的别名,该代码也就是定义了俩指针(p1和p2),非常方便。
用于结构体(struct):
struct Temp{ int Num1; int Num2;};在C语言中,如果想定义一个结构体变量,那么必须这么定义:
struct Temp t1;当代码中需要定义很多该结构体的话,可能就会比较麻烦,因为定义语句中必须包括struct Temp,如果使用typedef就会比较方便,看如下代码:
typedef struct Temp{ int Num1; int Num2;}TempNum;TempNum t1; //定义一个struct Temp结构体变量这样每次定义该结构体的时候,只需用该结构体别名TempNum进行定义即可。
用于数组:
char Str1[10]; char Str2[10];当需要定义多个char类型并且元素个数都相同的数组时,如果用如上代码分别定义的话,可能会比较麻烦,typedef依然可以解决该问题:
typedef char STR[10]; STR s1; STR s2;这样就定义了俩元素个数都为10的char类型数组,是不是很方便呢?
用于函数指针:
假设有一个函数,他接收俩个函数指针:
void f1(int n){ /* ......... */}void f2(int n){ /* ......... */}void Func(void(*s1)(int),void(*s2)(int)){ //接收俩参数为int的并且返回类型为void的函数指针 /* ......... */}
Func(f1,f2);或者代码中有很多地方都需要定义一个参数为int并且返回void的函数指针变量,那么使用void(*s1)(int)形式定义一个该类型的函数指针变量(s1)将会很麻烦 ,如果使用typedef将会方便很多:
typedef void(*SS)(int);void Func(SS s1,SS s2){ /* ......... */}该Func等价于上面的void Func(void(*s1)(int),void(*s2)(int));
以上就是对typedef的使用方法上进行了小小总结,便于以后进行查阅~
阅读全文
0 0
- C/C++中typedef关键字用法总结
- <C/C++基础>关键字typedef用法总结
- C/C++中typedef关键字总结
- c/c++关键字typedef用法
- C/C++ 中typedef 用法总结
- 【总结】C语言中typedef语句用法
- C语言typedef关键字总结
- 【c语言】typedef用法总结
- C语言的关键字typedef的用法
- C/C++:typedef关键字
- 【c/c++】关键字typedef
- C语言中typedef用法
- C语言中typedef用法
- C语言中typedef用法
- C语言中typedef用法
- C语言中typedef用法
- C语言中typedef用法
- C语言中typedef用法
- java新IO---通道(Channel)
- 1662: [Usaco2006 Nov]Round Numbers 圆环数
- 最短路径之迪杰斯特拉
- 6.Linux环境变量
- C学习笔记(一)
- C/C++中typedef关键字用法总结
- A
- ASP.NET MVC多语言 仿微软网站效果
- 前端大杂烩
- java 8 新特性-函数式接口&lambda
- charles抓取https中出现unknow的解决方法
- 比特币与区块链
- 设计一个动物声音“模拟器”,希望模拟器可以模拟许多动物的叫声。
- heartbeats+elastic+kibana