带元组的 typedef 如何工作?
How does typedef with tuples work?
我们在作业程序中得到了这个 typedef。作为一个程序员菜鸟,我以前没见过这样的东西。这是否意味着任何 DoubleFunction2D 实际上都是 (double, double) 的二元组?
节目:
typedefs:
typedef double (*DoubleFunction) (double);
typedef double (*DoubleFunction2D) (double, double);
typedef double (*DoubleFunction3D) (double, double, double);
用法示例
(我的一个任务的WIP解决方案,还没有complied/tested。里面):
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);
}
这里没有元组(实际上C语言中没有"tuples").
typedef double (*DoubleFunction) (double);
意味着 DoubleFunction
是一个指向函数的指针,它接受一个double
和returns一个double
.
typedef double (*DoubleFunction2D) (double, double);
意味着 DoubleFunction2D
是一个指向函数的指针,该函数接受两个 double
值和 returns 一个 double
.
typedef double (*DoubleFunction3D) (double, double, double);
意味着 DoubleFunction3D
是一个指向函数的指针,该函数接受三个 double
值和 returns 一个 double
.
我们在作业程序中得到了这个 typedef。作为一个程序员菜鸟,我以前没见过这样的东西。这是否意味着任何 DoubleFunction2D 实际上都是 (double, double) 的二元组?
节目:
typedefs:
typedef double (*DoubleFunction) (double);
typedef double (*DoubleFunction2D) (double, double);
typedef double (*DoubleFunction3D) (double, double, double);
用法示例
(我的一个任务的WIP解决方案,还没有complied/tested。里面):
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);
}
这里没有元组(实际上C语言中没有"tuples").
typedef double (*DoubleFunction) (double);
意味着 DoubleFunction
是一个指向函数的指针,它接受一个double
和returns一个double
.
typedef double (*DoubleFunction2D) (double, double);
意味着 DoubleFunction2D
是一个指向函数的指针,该函数接受两个 double
值和 returns 一个 double
.
typedef double (*DoubleFunction3D) (double, double, double);
意味着 DoubleFunction3D
是一个指向函数的指针,该函数接受三个 double
值和 returns 一个 double
.