C ++ - 从main之外的方法访问数组(在main中)

时间:2010-03-11 05:38:39

标签: c++ arrays

我的主类中有一个数组,它包含我需要打印出来的菜单列表对象。数组在main中声明并初始化。但是,我需要在子菜单功能中访问相同的数组。如果我将代码(用于打印输出值的循环)复制到子菜单,则不打印任何内容(可能是因为它无法访问原始数组并创建了一个新的空白数组)。有没有办法(不使数组成为全局变量)我可以在这个子菜单中访问数组?主菜单和子菜单功能都在同一个文件中,子菜单从main调用。

也许更简单地说,我可以使用范围分辨率来提升范围内的一个“级别”吗?

4 个答案:

答案 0 :(得分:8)

您可以将数组作为附加参数传递给函数。

答案 1 :(得分:1)

如果我理解你的问题,你需要在另一个函数中访问一个函数中的数组吗?

将数组作为const引用传递给第二个函数。

#include <iomanip>
#include <iostream>
#include <vector>

using std::vector;
using std::cout;
using std::endl;

void print(const vector<int> &array)
{
        for (int i = 0; i != array.size(); ++i)
        {
                cout << array[i] << " ";
        }

        cout << endl;
}

int main()
{
        vector<int> myArray;
        myArray.push_back(0);
        myArray.push_back(1);
        myArray.push_back(2);
        myArray.push_back(3);
        myArray.push_back(4);
        myArray.push_back(5);

        print(myArray);

        return 0;
}

答案 2 :(得分:0)

相信我这是我写过的最脏的代码。
      C ++ - 从主

之外的方法访问数组(在main中)
#include<iostream>
using namespace std;

void foo();

int main(int argc, char* argv[],bool yes,int* arr=NULL)
{
    cout << "Inside Main"<<endl;

    if(0 != yes)
    {
        foo();
    }
    else
    {
        cout<<"Got that array at : "<< &arr <<endl;
    }

    return 0;
}

void foo()
{
    cout << "Inside Foo"<<endl;

    int billy [5] = { 16, 2, 77, 40, 12071 };

    main(0,NULL,false,billy);
}

注意:MBennett的答案很好。 1

答案 3 :(得分:0)

我会尝试将子菜单作为参数传递给对象。