将struct指针参数展开到函数

时间:2017-12-01 09:15:10

标签: c function struct

我想问一下你在编程时想到的一些想法。在for循环之前,我创建新的局部变量来保存所有结构变量,以提高可读性和性能。这是示例代码:

#define PI 3.14

typedef struct{

    double var1;
    double var2;
    double var3;
    double var4;
}MyStruct1;

typedef struct{

    double var1;
    double var2;
    double var3;
}MyStruct2;

double* Foo(const MyStruct1* const struct1, const MyStruct2* const struct2){

    const int size = 10000; 
    double* arr = (double*)calloc(size*5, sizeof(double));
    if(!arr)
        return NULL;

    const double a = struct1->var1;
    const double b = struct1->var2;
    const double c = struct1->var3;
    const double d = struct1->var4;

    const double e = struct2->var1;
    const double f = struct2->var2;
    const double g = struct2->var3;

    for(int i = 0 ; i < size; i++){
        arr[i]          = -a*pow(b,2.0)*c*d;
        arr[i + size]   = 2.0*a*b*c*2.0*PI*g*f;
        arr[i + 2*size] = -2.0*Pi*a*g*d;
        arr[i + 3*size] = -a*g;
        arr[i + 4*size] = b;
    }
    return arr;
}

首先,如果我不使用局部变量来保存struct1值 for循环将在一行中包含大量文本。我认为它增加了可读性,因为如果我要用struct1-> var替换a,b,c,d,e,f,g,那么我必须使2行或更多来计算arr [i]等< / p>

其次我认为它可能会提高性能,因为我不需要在for循环的每次迭代中取消引用这些指针。我不知道循环将来是10000次迭代还是100000次。

我认为此解决方案可提高可读性和性能。性能提升可能甚至不明显,但我这样做是为了提高功能关键部分的可读性。在我的真实程序中,var1,var2等具有更长的名称。例如,它们的名称为:bandwidthFactor,centralFrequency。

由于我不是非常有经验的程序员,我想问一下我所假设的是否正确。我这样做是对的,或者我不应该创建新变量并使用struct-&gt; var1语法来计算arr [i]值。 对我来说这似乎更优雅,但真正重要的是那些未来可能会看到这样的代码的人更优雅。

0 个答案:

没有答案