首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在C++中声明和初始化数组

在C++中声明和初始化数组
EN

Stack Overflow用户
提问于 2010-06-29 11:34:50
回答 3查看 169.8K关注 0票数 55

有没有一种方法可以在C中先声明然后初始化数组?

到目前为止,我已经像这样初始化了一个数组:

代码语言:javascript
复制
int myArray[SIZE] = {1,2,3,4....};

但是我需要做这样的事情

代码语言:javascript
复制
int myArray[SIZE];

myArray = {1,2,3,4....};
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-06-29 11:40:27

在C99中,您可以结合使用复合文字和memcpy来完成此操作

代码语言:javascript
复制
memcpy(myarray, (int[]) { 1, 2, 3, 4 }, sizeof myarray);

(假设源的大小和目标的大小相同)。

在C89/90中,你可以通过声明一个额外的“源”数组来模拟这个过程

代码语言:javascript
复制
const int SOURCE[SIZE] = { 1, 2, 3, 4 }; /* maybe `static`? */
int myArray[SIZE];
...
memcpy(myarray, SOURCE, sizeof myarray);
票数 33
EN

Stack Overflow用户

发布于 2010-06-29 11:39:13

为什么你不能在声明的时候初始化?

你用的是哪种C编译器?它支持C99吗?

如果它支持C99,您可以在需要的地方声明变量,并在声明时对其进行初始化。

我能想到的不这样做的唯一理由是,你需要声明它,但在使用它之前要提前退出,这样初始化器就会浪费。然而,我怀疑任何这样的代码都没有像它应该的那样整洁地组织起来,并且可以编写,所以它不是一个问题。

票数 1
EN

Stack Overflow用户

发布于 2017-06-29 01:06:59

不可能在初始化后一次将所有值赋给数组。最好的替代方法是使用循环。

代码语言:javascript
复制
for(i=0;i<N;i++)
{
     array[i] = i;
}

您可以硬编码并赋值,如--array[0] = 1等。

如果您已经将数据存储在数组中,也可以使用Memcpy。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3137671

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档