有没有一种方法可以在C中先声明然后初始化数组?
到目前为止,我已经像这样初始化了一个数组:
int myArray[SIZE] = {1,2,3,4....};
但是我需要做这样的事情
int myArray[SIZE];
myArray = {1,2,3,4....};
发布于 2010-06-29 11:40:27
在C99中,您可以结合使用复合文字和memcpy
来完成此操作
memcpy(myarray, (int[]) { 1, 2, 3, 4 }, sizeof myarray);
(假设源的大小和目标的大小相同)。
在C89/90中,你可以通过声明一个额外的“源”数组来模拟这个过程
const int SOURCE[SIZE] = { 1, 2, 3, 4 }; /* maybe `static`? */
int myArray[SIZE];
...
memcpy(myarray, SOURCE, sizeof myarray);
发布于 2010-06-29 11:39:13
为什么你不能在声明的时候初始化?
你用的是哪种C编译器?它支持C99吗?
如果它支持C99,您可以在需要的地方声明变量,并在声明时对其进行初始化。
我能想到的不这样做的唯一理由是,你需要声明它,但在使用它之前要提前退出,这样初始化器就会浪费。然而,我怀疑任何这样的代码都没有像它应该的那样整洁地组织起来,并且可以编写,所以它不是一个问题。
发布于 2017-06-29 01:06:59
不可能在初始化后一次将所有值赋给数组。最好的替代方法是使用循环。
for(i=0;i<N;i++)
{
array[i] = i;
}
您可以硬编码并赋值,如--array[0] = 1
等。
如果您已经将数据存储在数组中,也可以使用Memcpy。
https://stackoverflow.com/questions/3137671
复制相似问题