【问题标题】:Use an array in main() in another function in c++在 C++ 的另一个函数中使用 main() 中的数组
【发布时间】:2018-12-19 09:23:58
【问题描述】:

您好,我的任务是创建一个填充数组的函数,在 main() 中创建,然后在另一个函数中使用该数组,我应该用它进行一些计算。我已经有一些代码,你能帮我怎么做吗?提前谢谢你

#include <iostream>;
using namespace std;

int* modArray(int* a, int size) {

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

int modAddition() {} // This is the function, where I want to use, the "a" array

int main() {

    int size = 7;
    int* a = new int[size];

    a = modArray(a, size);

    system("pause");

    return 0;
}

【问题讨论】:

  • “怎么做” 做什么怎么做?您的代码似乎已经将数组传递给函数。
  • 另请注意,在这种情况下您不需要返回int *。您可以将返回类型更改为void,删除return a; 并将a = modArray(a, size); 替换为modArray(a, size);,而不会改变行为。
  • 你已经用modArray完成了,用modAddition做同样的事情
  • 好吧,谢谢你的帮助,我认为当我在 main 中有一个数组时,它是一个本地的,我不能在另一个函数中使用它,只需输入 int* a,因为它是要做一个新数组。我还是个初学者,所以让我很困惑。
  • 您在输入new int[size] 时创建了数组。而int* a = 只是做了一个指针。该指针将指向数组的第一个元素,即使您将它传递给函数,它也会一直指向那里。数组本身将一直存在,直到您调用 delete[] 并传递一个指向数组的指针。在那之前,如果你有一个指向数组的指针或引用,你可以在任何函数中使用它。

标签: c++ arrays function


【解决方案1】:

您的 modArray 有效,在这种情况下不需要返回声明。你可以在你的 modAddition 中做同样的事情。请记住,如果它们没有返回,它们将是 void 方法。

【讨论】:

    猜你喜欢
    • 2015-05-12
    • 2013-11-27
    • 1970-01-01
    • 2021-07-15
    • 1970-01-01
    • 2021-08-19
    • 2013-08-09
    • 2014-03-24
    • 1970-01-01
    相关资源
    最近更新 更多