很抱歉,如果这是一个简单的问题,但我已经对此进行了大量搜索,发现没有任何相关内容,可能是因为我不熟悉编程并且不知道具体的术语。 所以,我有一个工作正常的程序。在代码的开头,我将以下数组定义为全局变量:
static double arr[] = {
[0] = 50,
[1] = 0
};
但是,我处理大量数据时,我的数组需要有很多元素。如果我被允许在变量的定义中使用循环,那将非常容易。但是,每次我尝试这个时,我都会收到以下错误消息
expected primary-expression before
为了正确定义数组的元素,我该怎么做?
答案 0 :(得分:4)
对于C样式数组,您需要事先用必要的大小声明变量。
static double arr[YOUR_SIZE];
然后只有在main中,你可以填充元素
int main () {
for (int i=0; i < ((sizeof(arr))/(sizeof(arr[0])))); ++i) {
//whatever here
arr[i] = i;
}
}
对于C ++,您可以使用运行时分配的向量
std::vector<double> arr;
int main () {
for (int i=0; i < YOUR_MAX; ++i) {
arr[i] = i;
}
}
答案 1 :(得分:1)
虽然您可以在C99及更高版本中使用指定的初始值设定项,但该标准要求初始化程序需要长时间写出。 GCC提供范围初始化扩展,以便您可以初始化具有相同非零值的索引范围(您不需要扩展来将所有内容初始化为零)。
int array[100] =
{
[50 ... 80] = 27, // GCC extension
};
请注意,省略号周围需要空格,因为最大限度的咀嚼&#39;规则。 50.
看起来像一个有效的浮点数,因此不是有效的数组索引。
但是,即使在GCC中,也无法在初始化程序中写出循环。