我正在学习C,有些事情使我感到困惑,我读过的书并没有帮助澄清我的问题。
所以这是我的代码:
xargs
是否有一种方便的方法在声明后初始化此数组?或者设置#include <stdio.h>
#include <stdlib.h>
#define ARRAY_SIZE 5
// gcc -std=c99 stackoverflow-example.c
int main () {
// declare variable array1
int array1[ARRAY_SIZE];
// declare and init variable array2
int array2[ARRAY_SIZE] = {}; // for integers, the default value is 0
// not initialized
for (int i = 0; i < ARRAY_SIZE; i++) {
// can be anything, not guaranteed to be 0
printf("array1[%d]: %d\n", i, array1[i]);
}
// initialized with initialization list
for (int i = 0; i < ARRAY_SIZE; i++) {
// element == 0
printf("array2[%d]: %d\n", i, array2[i]);
}
// This is the part that confuses me.
// array1 = {}; // error: expected expression before ‘{’ token
// array1[] = {}; // same error
return EXIT_SUCCESS;
}
中每个元素的唯一方法是使用for循环,例如:
array1
我非常感谢你的帮助。我知道它有点像一个菜鸟问题,但它出现了,因为我试图更熟悉C语言并尝试了一些非书籍示例代码。
如果你怀疑,可能有一些基本的东西我没有得到,请告诉我,我会读到它。
答案 0 :(得分:1)
从技术上讲,initialization只能在声明时间完成一次,存储之后的任何值都是分配或复制。
括号括起的初始化列表只能在声明时用于数组的初始化。
对于数组的单个元素(标量项),规则为:(引用C11
,章节§6.7.9)
标量的初始值设定项应为单个表达式,可选择用大括号括起来。
并且空列表{}
不是标量的有效初始值设定项(表达式)。因此你得到了错误。
因此,对于已定义的数组,重新设置必须完成