将数组传递给函数c ++?

时间:2016-05-08 08:14:15

标签: c++ arrays

我想从用户输入中读取一些数字,然后在每一行显示5。我的代码是这样的:

#include <iostream>
using namespace std;

const int INPUT_SIZE = 7;

void printValues(int *b) {

    int counter = 0;
    while (counter < INPUT_SIZE) {
        cout << *(b+counter) << " ";
        if ((counter + 1) % 5 == 0 && counter>0) {
            cout << endl;
        }

        counter++;
    }
    cout << endl;
    system("pause");
}

int * readValues() {
    int b[INPUT_SIZE];
    for (int i = 0; i < INPUT_SIZE; i++) {
        cout << "Enter element on position: " << i << ": ";
        cin >> b[i];
    }
    return b;
}

int main() {

    int* b;
    b = readValues();
    printValues(b);

    return 0;
}

但是,当我尝试打印它们时,我会得到一些奇怪的数字,我认为它们是内存位置。如何打印数组以及如何编写返回数组的函数?我对指针的经验很少,因为到目前为止我只用Java编码。 非常感谢。

1 个答案:

答案 0 :(得分:2)

您的数组b是函数readValues内的局部变量。

readValues退出时,阵列将被销毁。

函数返回后,从readValues返回的指针无效。尝试使用它(例如将其传递给printValues)是不正确的(正式来说,它会导致未定义的行为)。

您可能会因b中的指针变量mainb中的数组readValues一样,给同名main造成一些混淆。它们完全是独立的变量。

如果要在两个函数中使用相同的数组,则需要确保它位于范围内,以确保它只要您需要它就可以存在。这可以通过使其成为apply中的局部变量。