c ++函数创建一个二维数组并返回一个指向二维数组的指针

时间:2015-10-03 04:54:12

标签: c++ arrays pointers

我是c ++的新手,我正在学习使用指针和数组。我正在努力编写一段代码并且似乎正在做它应该做的事情,除了main函数中指针的输出似乎是一个内存地址,所以我必须错过一些我的方式我正在调用或返回指针。 (我希望我的术语正确)

在我的main函数中,我创建了一个指针变量并将其初始化为null(教授建议初始化所有变量)

int** ptr1=NULL;

接下来,我将指针设置为等于我的函数,这将创建数组

ptr1 = makeArray1();

这是我的功能代码。

int** makeArray1()

{

const int ROW = 2;
const int COL = 3;

int** array1 = new int* [ROW];                          //This creates the first row of cols
for (int i = 0; i < ROW; i++)
    {
        array1[i] = new int[COL];               //loop to create next col of all rows
    }

for (int i = 0; i < ROW; i++)
    {
        for (int j = 0; j < COL; j++)
            {
                cout << endl << "Please enter an integer in the first matrix: ";
                cin >> array1[i][j];
            }
    }

cout << endl;

for (int i = 0; i < ROW;i++)
    {
        for (int j = 0; j < COL; j++)
            {
                cout << setw(4) << array1[i][j];
            }
        cout << endl;
    }
cout << endl << endl << "In array 2 array2 = " << *array1;

return array1;

}

数组似乎填充了我的输入正常,但是当我在main函数中打印ptr1时,它返回一个内存地址而不是输入到数组中的数字。

任何帮助都将不胜感激。

3 个答案:

答案 0 :(得分:0)

尝试声明:int ** array1 = new int * [ROW]; 在你的职能之外,如果可以的话

答案 1 :(得分:0)

打印指针将打印指针的值。哪个是内存地址。如果要查看2d数组开头的值,则需要取消引用指针。

答案 2 :(得分:0)

ptr1是一个指针。难怪你得到一个记忆地址,因为指针是一个记忆地址。如果要打印数组的内容,则必须取消引用指针。 像这样:

for(int i=0; i < ROW; i++) {
    for(int j=0; j < COL; j++) {
         cout<<ptr1[i][j];
    }
}