typedef int (*pfun)(int x,int y);
解析:
这里的pfun是一个使用typedef自定义数据类型。它表示一个函数指针,其参数有两个,都是int类型,返回值也是int类型。可以按如下步骤使用:
1 typedef int (*pfun)(int x,int y);
2 int fun(int x, int y);
3 pfun p = fun;
4 int ret = p(2, 3);
简单说明:
q 第1行定义了pfun类型,表示一个函数指针类型。
q 第2行定义了一个函数。
q 第3行定义了一个pfun类型的函数指针p,并赋给它fun的地址。
q 第4行调用p(2, 3),实现fun(2, 3)的调用功能。
答案:
定义了一个函数指针类型表示指向返回值为int,且同时带2个int参数的函数指针类型了。可以用这种类型来定义函数指针来调用相同类型的函数。
***********************************************************************
函数指针,顾名思义,它指向一个函数的入口地址,其定义及使用如下:
定义:returntype (*ptr) (typename variable,......)
返回类型 指针名称 指向函数的参数表。
你不能这样: returntype *ptr (typename variable,......) 这样会被理解为一个函数的定义。 你需要知道,函数名并不是函数类型的一部分,所以对于函数指针来说,函数的返回类型和参数表是很重要的。这两个东西要与函数指针完全匹配。
你定义了函数:int cal(int a,int b) int get(int a,int b)
定义函数指针:int (*ptr)(int ,int);
初始化:
int (*ptr)(int ,int)=cal;
int (*ptr)(int,int)=&cal; 将ptr赋值为cal函数,这两种是等价的。
调用:
int val1=3,val2=4;
ptr(val1,val2);
(*ptr)(val1,val2); 这两种调用方式也是完全等价的。
不用初始化的方法,用返回函数指针的方法
void * get_cal(int (*ptr)(int ,int))
{
teturn ptr;
}
调用get_cal(&cal)就可以返回cal函数的入口地址
阅读(3941) | 评论(0) | 转发(0) |