2

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

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

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

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

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

提前致谢。

4

2 回答 2

0

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

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

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

于 2013-03-18T01:59:27.230 回答
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
}
于 2013-03-18T02:03:48.043 回答