我正在寻找一种方法来访问通过指针传递的多维数组。我按照这里的问题(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;
只是一个占位符
答案 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");
}