在C ++中将数组作为参数从一个函数传递到另一个函数?

时间:2018-02-06 14:36:03

标签: c++ arrays function parameters

我有一个程序,我希望传递一个数组 - 在这种情况下k[arrsize],这是funciton fillArray()到另一个函数create_file()的参数(相同的数组,填充随机数)。但是,我无法传递相同的数组,我想问一下如何做到这一点?

#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <time.h>
#include <stdlib.h>
using namespace std;
const int arrsize = 20;
//int a[arrsize];
fstream p;
void fillArray(int k[arrsize])
{
    srand((unsigned)time(NULL));
    for (int i = 0; i<20; i++)
    {
        if (i % 2 == 0)
        {
            k[i] = -(rand() % 100);
        }
        else
        {
            k[i] = (rand() % 100);
        }
    }
}



void create_file(int k[arrsize])
{
    p.open("danni.dat", ios::out);
    for (int i = 0; i<20; i++)
    {
        p << k[i] << endl;
    }
    p.close();
}

int main() {
    fillArray(k);
    create_file(k);

    return 0;
}

2 个答案:

答案 0 :(得分:2)

你只是忘了定义一个数组:

int main() {
    int k[arrsize];

    fillArray(k);
    create_file(k);
}

答案 1 :(得分:1)

通常,您不想传递整个数组,而是可能希望传递对它的引用。我建议你使用std :: array而不是C风格的数组。

#include <array>

void fill(std::array<int, 1>& a)
{
    a[0] = 0;
}

int main()
{
    std::array<int, 1> a = {};
    fill(a);
    return 0;
}