typedef常见用法

一、typedef的作用

1、typedef的一个重要用途是定义机器类型无关的类型。

例如在适用long double的目标机器上定义名为“REAL”的数据类型:

typedef long double REAL;

如果在不适合long double的机器上运行相关代码,只需要修改对应的typedef语句。例如:

typedef double REAL;
//或者
typedef float REAL;
2、使用typedef为现有类型创建别名,给变量定义一个易于记忆且意义明确的新名字

例如:

typedef unsigned int UNINT;
3、使用typedef简化一些比较复杂的类型声明

例如:

typedef void (*PFunCallBack)(char* pMsg, unsigned int nMsgLen);

二、七种类型定义

1、常规变量类型定义
// uchar等价于 unsigned char
typedef unsigned char uchar
// 两种定义方式相同
uchar c;
unsigned char c;

2、数组类型定义
// array 等价于 int [2]
typedef int array[2];
// 两种定义方式相同
array a;
int a[2];

// 扩展
// array 等价于 int [M][N]
typedef int array[M][N];
// 两种定义方式相同
array a;
int a[M][N];
3、指针类型定义
// pointer 等价于 int*定义
typedef int* pointer;
// 两种定义方式相同
pointer p;
int *p;

// 拓展
typedef int *pointer[M];
// 两种定义方式相同
pointer a;
int *a[M];
4、函数地址说明
// C把函数名字当做函数的首地址来对待,我们可以使用最简单的方法得到函数地址

5、函数声明
// func 等价于  int (void)函数
typedef int func(void);
//  func f声明等价于 int f(void)声明,用于文件的函数声明
func f;
int f(void);
//   func *pf声明等价于 int (*pf)(void)声明,用于函数指针的生命,同下一条
func *pf;       
int (*pf)(void);
6、函数指针
// func 等价于 int(*)(void)类型
typedef int(*func)(void)
// 两种定义方式相同
func pf;        // pf是一个函数指针变量
int (*pf)(void);

三、typedef与#define

两者的区别如下:

  • #define进行简单的字符串替换。

    • #define pStr1 char*;
      pStr1 s1,s2;
      
      // 解释
      // s1 是 char* 类型,s2是char类型
      // 因为#define只做简单的字符串替换,替换后的代码等同于:
      char *s1, s2;  // s2没有享受到 *
      
  • typedef是为一个类型起新名字。

    • typedef char* pStr2;
      pStr2 s3,s4;
      
      // 解释
      // typedef 为 char* 定义了新类型 pStr1 后,相关代码等同于为:
      char *s3, *s4;
      
  • 5
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值