• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

SOC/IP验证工程师

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

C语言中typedef的用法

可以用typedef指定新的类型名来代替已有的类型名。
1.简单地用一个新的类型名代替原有的类型名;

typedef int Integer;
typedef float Real;

2.命名一个简单的类型名代替复杂的类型表示方法;
2.1 命名一个新的类型名代替结构体类型

typedef struct
{  int month;
   int day;
   int year;
} Date;
Date birthday;  //定义结构体类型变量birthday

2.2 命名一个新的类型名代替数组类型

typedef int Num[100];//声明Num为整型数组类型名
Num a;

2.3 命名一个新的类型名代替指针类型

typedef char * String;  //声明String为字符指针类型
String p, s[10];  //定义p为字符指针类型变量,s为字符指针数组

2.4 命名一个新的类型名代表指向函数的指针类型

typedef int (*Pointer)();  //声明Pointer为指向函数的指针类型,该函数返回整型值
Pointer p1, p2;//p1,p2为Pointer类型的指针变量

归纳起来,声明一个新的类型名的方法是:
2.4.1 先按定义变量的方法写出定义体(int i);
2.4.2 将变量名换成新类型名(将i换成Count);
2.4.3 在最前面加typedef(typedef int Count);
2.4.4 然后可以用新类型名去定义变量;
习惯上,常把用typedef声明的类型名的第一个字母用大写表示,以便与系统提供的标准类型相区别。
2.4.5.1 以上的方法实际上是为特定类型指定了一个同义字;
typedef int (*Pointer)();//Pointer是int(*)()的同义词,代表指向函数的指针类型,函数值为整型
2.4.5.2 用typedef只是对已经存在的类型指定一个新的类型名,而没有创造新的类型。
2.4.5.3 用typedef声明数组类型,指针类型,结构体类型,共用体类型,枚举类型等,使得变成更加方便;

int a[10], b[10];//原来
typedef int Arr[10];//
Arr a, b, c, d;

2.4.5.4 typedef与define表面上游相似之处;

#define是在预编译时处理的,它只能作简单的字符替换,而typedef是在编译阶段处理的。实际上它并不是作简单的字符串替换。
typedef int Num[10];
Num a;

并不是用Num[10]去代替int,而是采用如同定义变量的方法那样先生成一个类型名,然后用它定义变量。
2.4.5.5 当不同源文件中用到同一类型数据时,常用typedef声明一些数据类型。可以把所有的typedef名称声明单独放在一个头文件中,然后在需要用到它们的文件中用#include指令把它们包含到文件中。这样编程者就不需要在各文件中中自己定义typedef名称了。
2.4.5.6 使用typedef名称有利于程序的通用与移植。有时程序会依赖于硬件特性,用typedef类型就便于移植。

posted on 2022-11-20 20:00  SOC验证工程师  阅读(621)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3