将带有可变边界的2d数组传递给函数

时间:2013-03-18 01:23:02

标签: c++ arrays function

我有一个array,其边界由另一个变量(不是常量)定义:

 int max = 10;
 int array[max][max];

现在我有一个使用array的函数,但我不知道如何将数组传递给函数。我该怎么做?

所以为了使它更清楚,我如何使这项工作(我考虑使用类,但变量max由用户输入定义,所以我不能使数组成为类的成员因为max必须是常数)

void function (int array[max][max])
{
}

提前致谢。

2 个答案:

答案 0 :(得分:0)

如果数组大小在函数中保持不变,您可以考虑使用指针加上数组大小的第二个参数。

void function(int *array, const int size)
{
}

如果你想改变函数的大小,你可能真的会考虑像std :: vector这样的std实现。

答案 1 :(得分:0)

#include <iostream>    
using namespace std;

int main() {
    int** Matrix;                     //A pointer to pointers to an int.
    int rows,columns;
    cout << "Enter number of rows: ";
    cin >> rows;
    cout << "Enter number of columns: ";
    cin >> columns;
    Matrix = new int*[rows];         //Matrix is now a pointer to an array of 'rows' pointers.

    for(int i=0; i<rows; i++) {
        Matrix[i] = new int[columns];    //the i place in the array is initialized
        for(int j = 0;j<columns;j++) {   //the [i][j] element is defined
                cout<<"Enter element in row "<<(i+1)<<" and column "<<(j+1)<<": ";
            cin>>Matrix[i][j];
        }
    }
    cout << "The matrix you have input is:\n";

    for(int i=0; i < rows; i++) {
        for(int j=0; j < columns; j++)
            cout << Matrix[i][j] << "\t";   //tab between each element
        cout << "\n";               //new row
    }
    for(int i=0; i<rows; i++)                
        delete[] Matrix[i];         //free up the memory used
}