带元组的typedef如何工作?

问题描述:

我们在一个家庭作业程序中得到了这个typedef。作为程序员noob,我以前没有看到过这样的事情。这是否意味着任何DoubleFunction2D实际上是(double,double)的2元组?带元组的typedef如何工作?

计划:

的typedef:

typedef double (*DoubleFunction) (double);  
typedef double (*DoubleFunction2D) (double, double);  
typedef double (*DoubleFunction3D) (double, double, double); 

用法示例
(我WIP解决了任务,没有遵守/测试中):

double expf2D(double x, double y) 
{ 
    double r = sqrt(pow(x,2) + pow(y,2)); 
    return my_expf(r); 
} 

double DiskMonteCarloIntegrator(DoubleFunction2D f, double r1, double r2, int N) 
{ 
    bool is_inside_ring(double x, double y){ 
     return is_inside_ellipse(x, y, r2/2, r2/2) && !(is_inside_ellipse(x, y, r1/2, r1/2)); 
    } 
    int i=0; 
    double x, y, sum = 0; 
    while(i < N) 
    { 
     x = RandomDouble(-1*r1, r1); 
     y = RandomDouble(-1*r1, r1); 
     if(is_inside_ring(x, y)) 
     { 
      sum += f(x, y); 
      i++; 
     } 
    } 
    double avg = sum/N; 
    double integral = avg * (pow(r2, 2) - pow(r1, 2)) * M_PI; 
    return integral; 
} 

//extract 
void main(int argc, char *argv[]){ 
    DiskMonteCarloIntegrator(expf2D, 1.0, 2.0, 1000000); 
} 
+0

typedef-ed指向函数的指针 – LPs

有没有这里的元组(实际上,C编程语言中没有“元组”)


typedef double (*DoubleFunction) (double);  

装置DoubleFunction是指向采用一个double并返回一个double的功能。


typedef double (*DoubleFunction2D) (double, double);  

装置DoubleFunction2D是指向采用两个double值并返回一个double的功能。


typedef double (*DoubleFunction3D) (double, double, double); 

装置DoubleFunction3D是一个指针,指向需要三个double值并返回一个double的功能。