Chinaunix首页 | 论坛 | 博客
  • 博客访问: 21068
  • 博文数量: 6
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 30
  • 用 户 组: 普通用户
  • 注册时间: 2015-03-10 12:15
文章分类
文章存档

2015年(6)

我的朋友

分类: C/C++

2015-03-29 23:17:06

问:
原声明:int *(*a[5])(int, char*); 
变量名为a,直接用一个新别名pFun替换a就可以了: 
typedef int *(*pFun)(int, char*);  
原声明的最简化版: 
pFun a[5];  

到底应该怎么理解这句话呢?谢谢大家了! 

答案:
typedef int pInt; 知道什么意思,上面的就好理解了哈。
pInt a[5];

typedef int *(*pFun)(int, char*);    
声明一个函数指针类型pFun , 给类型的指针指向的函数,返回类型为 int * 参数为(int ,char *)

这样pFun 就和 pInt 一样是一种类型了

可以利用他来声明变量

pFun b;   一个函数指针
pFun a[5];  一个函数指针数组  a[0]到a[4]每一个都是一个函数指针。

你可以定义一个这样的函数

int * Fun(int i,char *c)
{
    int *c=new int;                    //c pointer to a   uninitialized int; 
    *c=i;                                  //c point to a int initialized to 0;
    return c;
}

然后

pFun b;

b=Fun;

可以利用b来调用Fun函数

b(2,c) 等价于 Fun(2,c) 
阅读(2519) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~