// 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
在右侧作业。有没有办法可以做到这一点?
答案 0 :(得分:3)
如果您的唯一目的是避免使用名为t
的变量,那么您可以免除一对compound literals:
data[i] = (struct tuple){sample1[i], 1};
data[i + 1] = (struct tuple){sample2[i], 2};
它应该满足任何对简洁的渴望。请记住,您需要启用C11(或C99)支持才能工作。 1
<子> 1 - 可变长度数组有点表示您已经启用它。 子>