typedef 和 函数指针 的使用

typedef的妙用  
typedef给你一种方式来克服“*只适合于变量而不适合于类型”的弊端。你可以如下使用typedef:  


typedef char * PCHAR;  
PCHAR p,q;  


这里的p和q都被声明为指针。(如果不使用typedef,q将被声明为一个char变量,这跟我们的第一眼感觉不太一致!)下面有一些使用typedef 


的声明,并且给出了解释:  


typedef char * a; // a is a pointer to a char  


typedef a b();   // b is a function that returns  
          // a pointer to a char  


typedef b *c;   // c is a pointer to a function  
          // that returns a pointer to a char  


typedef c d();   // d is a function returning  
          // a pointer to a function  
          // that returns a pointer to a char  


typedef d *e;   // e is a pointer to a function  
          // returning a pointer to a  
          // function that returns a  
          // pointer to a char  


e var[10];     // var is an array of 10 pointers to  
          // functions returning pointers to  
          // functions returning pointers to chars.  


typedef经常用在一个结构声明之前,如下。这样,当创建结构变量的时候,允许你不使用关键字struct(在C中,创建结构变量时要求使用str 


uct关键字,如struct tagPOINT a;而在C++中,struct可以忽略,如tagPOINT b)。  


typedef struct tagPOINT  
{  
  int x;  
  int y;  
}POINT;  


POINT p; /* Valid C code */  
//------------------------------------------------------------------------ 
函数指针  


函数指针可能是最容易引起理解上的困惑的声明。函数指针在DOS时代写TSR程序时用得最多;在Win32和X-Windows时代,他们被用在需要回调 函数的场合。当然,还有其它很多地方需要用到函数指针:虚函数表,STL中的一些模板,Win NT/2K/XP系统服务等。让我们来看一个函数指针的简单例子:  


int (*p)(char);  


这里p被声明为一个函数指针,这个函数带一个char类型的参数,并且有一个int类型的返回值。另外,带有两个float类型参数、返回值是char类型的指针的指针的函数指针可以声明如下:  


char ** (*p)(float, float);  


那么,带两个char类型的const指针参数、无返回值的函数指针又该如何声明呢?参考如下:  


void * (*a[5])(char * const, char * const);  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值