在程序开头填充数组

时间:2017-01-06 11:40:06

标签: c++ arrays

有没有办法在程序开头填充数组?我需要使用100个元素填充数组,并且所有元素都应该为零。

这是我的阵列:

const int arraysize = 100;
int a[arraysize];

我知道我应该使用for循环,但我不知道将for循环放在代码中的哪个位置。如果我把它放在主要部分它也不起作用。因为一个单独的函数正在使用该数组。该数组未在主数据库中使用。

For Loop:

for (int i = 0; i < 100; i++)
{
    a[i] = 0;
}

3 个答案:

答案 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 ++中添加它

memset的

此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]);