将数组传递给函数,没有任何输出

时间:2016-11-29 14:28:28

标签: c++ arrays function

我正在尝试创建一个填充数组的东西,其中包含1到100之间的100个随机数。当它在main函数中时工作正常,但是当我把它放在int函数中时没有输出;因为我刚刚开始,我必须遗漏一些简单的东西。我该怎么做才能解决这个问题?

 #include "stdafx.h"
    #include <time.h>
    #include <math.h>
    #include <iostream>

int arrayer(int ar[101],  int i);

int main()
{
    srand(time(0));
    int ar[101];

    for (int i = 1; i < 101; ++i)
    {
        int arrayer(int ar[101], int i);
    }
    return 0;
}



int arrayer(int ar[101],  int i) {


    ar[i] = rand() % 100 + 1;

    if (ar[i] < 10) {
        std::cout << i << ": " << "0" << ar[i] << std::endl;
    }

    else {
        std::cout << i << ": " << ar[i] << std::endl;
    }

    return ar[i];

}

3 个答案:

答案 0 :(得分:1)

您正在调用并正确声明该功能。这应该是它的样子:

#include "stdafx.h"
#include <time.h>
#include <math.h>
#include <iostream>

int arrayer(int ar[101],  int i);

int main() {
    srand(time(0));
    int ar[101];

    for (int i = 1; i < 101; ++i)
    {
        arrayer(ar, i);
    }
    return 0;
}

int arrayer(int* ar,  int i) {
    ar[i] = rand() % 100 + 1;

    if (ar[i] < 10) {
        std::cout << i << ": " << "0" << ar[i] << std::endl;
    }

    else {
        std::cout << i << ": " << ar[i] << std::endl;
    }

    return ar[i];
}

另请注意,您没有使用返回值,因此如果不会使用它,您可以省略它。

编辑:您实际上可以用以下内容替换if-else以打印值:

std::cout << i << ": " << setw(2) << setfill('0') << ar[i] << std::endl;

您需要包含&lt; iomanip&gt;这样做。

答案 1 :(得分:0)

您以非常错误的方式传递参数,调用函数的方式与声明或定义函数的方式更不同。您需要将函数调用为:

arrayer(ar, i);

只需传递数组地址ar,然后传递变量i

此外,最好让函数arrayer返回void而不是int,因为数组在传递给函数时会被修改,并且值会在函数本身中打印出来,所以你不需要退货。

答案 2 :(得分:0)

输出中没有任何内容,因为您从未调用 arrayer函数!

在你的循环中,你只需再次声明该函数。由于新声明与前一个声明兼容,编译器会毫无错误地接受它。

为了实际调用该函数,您需要一个函数调用表达式:

for (int i = 1; i < 101; ++i)
{
    arrayer(ar, i);
}