看不明白,一个typedef的使用

来源:百度知道 编辑:UC知道 时间:2024/06/23 20:56:18
typedef CvStatus (*CvGetQuadrangleSubPixFunc)(
const void* src, int src_step,
CvSize src_size, void* dst,
int dst_step, CvSize win_size,
const float* matrix );

把CvStatus等同于后边的一大堆?
能说的具体一点吗,*CvGetQuadrangleSubPixFunc在这时干什么用的?

首先,建议去察看一下函数指针的相关内容。

CvStatus 是自定义的一个类型名
而CvStatus (*CvGetQuadrangleSubPixFunc)()的声明方式代表的是声明函数指针。
如果变成这样:
CvStatus *CvGetQuadrangleSubPixFunc)()
那就是声名了一个返回值为CvStatus的指针类型的函数。

这是基本语法,它就规定这么做就是声明函数指针,倒没有多少道理可讲。

声明完函数指针后,你就可以这样使用函数
CvGetQuadrangleSubPixFunc();

其实这部分有点玄之又玄的感觉,建议找本书,自己练习一下就明白了。

函数指针,给个例子

#include <stdio.h>
#include <math.h>

typedef double (*function)(double x);

int main()
{
function f1 = sqrt; // correct
function f2 = *fabs; // also correct
printf("f1(%lf)=%lf\n",2.0,f1(2.0));
printf("f2(%lf)=%lf\n",-2.0,f2(-2.0));
return 0;
}

是的,右边的一大堆是函数指针