typedef说明

1.struct Student

  {

       int num;

       char sex;

       char name[50];

  };

  C中,要定义一个Student类型的变量需要使用方式struct Student st;

  C++中,要定义一个Student类型的变量只需要Student st;

  为方便,可使用typedef。如下:

  typedef struct tagSTUDENT

  {

       int num;

       char sex;

       char name[50];

  }STUDENT;

  这样,即使是在C中,要定义一个tagSTUDENT类型的变量也只需要使用STUDENT st;

2.同时声明指针型的多个变量时

  char* pa, pb;//实际pachar*类型,即指向字符变量的指针;而pbchar类型,即字符型变量

  使用typedef可解决此问题。

  typedef char* PCHAR;

  PCHAR pa, pb;//声明了两个char* 变量

  对结构体也是一样的。

  typedef struct tagSTUDENT

  {

       int num;

       char sex;

       char name[50];

  }* PSTUDENT, STUDENT;//实际PSTUDENTstruct tagSTUDENT*类型,STUDENTstructtagSTUDENT类型

3.typedef来定义与平台无关的类型。

   比如定义一个叫 REAL 的浮点类型,在目标平台一上,让它表示最高精度的类型为:

   typedef long double REAL; 

   在不支持 long double 的平台二上,改为:

   typedef double REAL;

   在连 double 都不支持的平台三上,改为:

   typedef float REAL;

   也就是说,当跨平台时,只要改下 typedef 本身就行,不用对其他源码做任何修改。

   标准库就广泛使用了这个技巧,比如size_t。另外,因为typedef是定义了一种类型的新别名,不是简单的字符串替换,所以它    比宏来得稳健。

4. typedef char* PCHAR1;

    #define PCHAR2 char*;

    PCHAR1 pa, pb; //pa,pb均为char*类型

    PCHAR2 pa, pb; //等价于char* pa, pb。相当于定义了一个char*和一个char

 

  参考

  [1] http://www.cnblogs.com/csyisong/archive/2009/01/09/1372363.html

 

typedef enum可以用来定义一个新的类型,并将一组相关的值赋予该类型。例如,我们可以使用typedef enum来定义一个新的枚举类型,其中包含两个值:true和false。这样,我们就可以使用这个新的类型来声明变量,以及对这些变量进行赋值和比较。下面是一个具体的例子: typedef enum { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY } Weekday; 在这个例子中,我们定义了一个新的枚举类型Weekday,其中包含了一周的七个值。现在,我们可以使用这个新类型来声明一个变量,并给它赋值。比如: Weekday today = MONDAY; 这样,我们就可以使用today这个变量来表示当前是星期几了。通过使用typedef enum,我们可以提高代码的可读性和可维护性,同时也可以减少错误的发生。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [每日收获之enum/typedef](https://blog.youkuaiyun.com/cassy2017/article/details/76218977)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [C语言中的struct、union、enum、Typedef](https://blog.youkuaiyun.com/jiangtu2012/article/details/46681713)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值