有没有办法在程序开头填充数组?我需要使用100个元素填充数组,并且所有元素都应该为零。
这是我的阵列:
const int arraysize = 100;
int a[arraysize];
我知道我应该使用for
循环,但我不知道将for
循环放在代码中的哪个位置。如果我把它放在主要部分它也不起作用。因为一个单独的函数正在使用该数组。该数组未在主数据库中使用。
For Loop:
for (int i = 0; i < 100; i++)
{
a[i] = 0;
}
答案 0 :(得分:2)
Aggregate initialization可用于初始化数组。您可以指定整个数组的值,数组的开头或没有数组。未指定的任何部分初始化为0或默认构造(取决于数组的类型)。看一下下面的例子。
#include <iostream>
int main()
{
const int arraysize = 10;
int a[arraysize] = {1, 2, 3, 6, 8, 5, 5, 0, 2, 7};
int b[arraysize] = {1, 2, 3};
int c[arraysize] = {};
for(int i = 0; i < arraysize; ++i) {
std::cout << a[i] << ' ' << b[i] << ' ' << c[i] << std::endl;
}
return 0;
}
这是示例的输出。
1 1 0
2 2 0
3 3 0
6 0 0
8 0 0
5 0 0
5 0 0
0 0 0
2 0 0
7 0 0
答案 1 :(得分:0)
int a[arraysize] = { 0 };
见这里:
http://en.cppreference.com/w/cpp/language/zero_initialization
如果T是数组类型,则每个元素都是零初始化
这仅适用于用零填充数组。
答案 2 :(得分:0)
我不知道为什么没有人提到memset
。我知道如果你想用0或-1填充整个整数数组,那么只有memset
才有效。但是您给出的示例表示您希望用0填充整个数组。这就是我向您解释memset
的原因。memset
是#include<string.h>
附带的交流功能或您可以通过#include<cstring>
此C库函数 void * memset(void * arrName,int valueForAll,sizeof(arrName))将值 valueForAll 复制到指向的数组的每个元素,通过参数 arrName 。
以下示例显示了memset()
函数的用法。
const int arraysize = 100;
int i,a[arraysize];
memset(a,0,sizeof(a)); /* fills the whole array with 0 */
memset(a,-1,sizeof(a)); /* fills the whole array with -1 */
for (i = 0; i < 100; i++)
printf("%d\n",a[i]);