c-typedef

在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明。

typedef char * pstr;

typedef char Line[81];

Line text, secondline;


要点一

typedef struct tagNode

  {

  char *pItem;

  pNode pNext;

  } *pNode;

错误申明,原因为pNode暂未申明。

 解决这个问题的方法有多种:

 1)、

  typedef struct tagNode

  {

  char *pItem;

  struct tagNode *pNext;

  } *pNode;

 2)、

  typedef struct tagNode *pNode;

  struct tagNode

  {

  char *pItem;

  pNode pNext;

  };

  注意:在这个例子中,你用typedef给一个还未完全声明的类型起新名字。C语言编译器支持这种做法

 3)、规范做法:

  struct tagNode

  {

  char *pItem;

  struct tagNode *pNext;

  };

  typedef struct tagNode *pNode;


要点二

 typedef & #define的问题

 typedef char* pStr;

  #define pStr char*;

  答案与分析:

  通常讲,typedef要比#define要好,特别是在有指针的场合。请看例子:

  typedef char* pStr1;

  #define pStr2 char *

  pStr1 s1, s2;

  pStr2 s3, s4;

  在上述的变量定义中,s1、s2、s3都被定义为char *,而s4则定义成了char,不是我们所预期的指针变量,根本原因就在于#define只是简单的字符串替换而typedef则是为一个类型起新名字。

  上例中define语句必须写成 pStr2 s3, *s4; 这这样才能正常执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值