如何直接将结构分配给数组?

时间:2018-03-25 11:23:02

标签: c struct

// Structure to store tuples of data
struct tuple {
    double val; 
    int source; // 1 or 2, as in sample1 or sample2
};

// Assume both samples are of length n
double function(double* sample1, double* sample2, int n) {  
    struct tuple data[n*2];
    for (int i = 0; i < n; i = i + 2) {
        struct tuple t = {sample1[i], 1};
        data[i] = t;
        t = {sample2[i], 2};
        data[i+1] = t;

    // more processing
    return value;   
}

我想避免在循环中声明struct tuple t,因为我不需要,但我无法找到一种方法来声明和初始化struct在右侧作业。有没有办法可以做到这一点?

1 个答案:

答案 0 :(得分:3)

如果您的唯一目的是避免使用名为t的变量,那么您可以免除一对compound literals

data[i]     = (struct tuple){sample1[i], 1};
data[i + 1] = (struct tuple){sample2[i], 2};

它应该满足任何对简洁的渴望。请记住,您需要启用C11(或C99)支持才能工作。 1

<子> 1 - 可变长度数组有点表示您已经启用它。