访问传递给函数的多维数组

时间:2016-03-16 22:21:47

标签: c++

我正在寻找一种方法来访问通过指针传递的多维数组。我按照这里的问题(Create a pointer to two-dimensional array)来创建我的数组和指向它的指针。我甚至可以将指针传递给函数,但是我不能使用指针来访问数组值。访问函数内部值的正确方法是什么。

main.cpp中:

MyArrayGenerator theArrGen = MyArrayGenerator();
const int size = 9;
int generatorArray[size][size][10];

theArrGen.generateArray(size, generatorArray[size][size+1]);

我班上的方法:

void MyArrayGenerator::generateArray(int size,int* pointerToMultiDimArr)
{
    int height = size + 1;
    // this ptr points to the array address
    int* ptr = pointerToMultiDimArr;
    // not working:
    ptr[1][1][1] = 123;
}

这会抛出编译器错误https://msdn.microsoft.com/de-de/library/fhexbxk9.aspx,这意味着指针未声明为数组。

我想我的方法参数需要改变,因为它需要一个指针并且不知道它将是一个数组。我的问题是:方法参数应该如何,以及如何在我的方法中访问数组。后来我希望用户输入多维数组的大小和

    const int size = 9;

只是一个占位符

1 个答案:

答案 0 :(得分:0)

使用指针表示法访问元素!这是一个访问和使用2d数组指针的示例,该程序打印矩阵的转置

#include<iostream>
int **arr_input(int row, int col)
{
    int **arr;
    arr = new int*[row];
    for (int i = 0; i < row; i++)        //array size
    {
        *(arr + i) = new int[col];
    }
    for (int i = 0; i < row; i++)
    {
        for (int j = 0; j < col; j++)
        {
            cin >> *(*(arr + i) + j);
        }
    }   //input array
    return arr;
}


void transpose(int**arr, int row, int col)
{
    for (size_t i = 0; i < row; i++)
    {
        for (size_t j = 0; j < col; j++)
        {
            cout << *(*(arr + j) + i) << "  ";      //pointer notation//
        }   
        cout << endl;
    }
}
void main(){
          int row ,col,**ptr1;
        cout << "Enter size of Square Matrix: ";    cin >> row; col = row;
        cout << "\n\tEnter the elements of Matrix\n";
        ptr1 = arr_input(row, col);    //calling array input function
        cout << "\nAdress of pointer is " << ptr1<<endl;
        transpose(ptr1, row, col);  //calling transpose function
        system("pause");
   }