可変サイズの 2D 配列をパラメータとして受け取りたい関数があります。
これまでのところ、私はこれを持っています:
void myFunction(double** myArray){
myArray[x][y] = 5;
etc...
}
そして、コード内の別の場所で配列を宣言しました。
double anArray[10][10];
しかし、呼び出すとmyFunction(anArray)
エラーが発生します。
配列を渡すときに、配列をコピーしたくありません。 で行われた変更は、myFunction
の状態を変更しますanArray
。正しく理解していれば、2D 配列へのポインターを引数として渡すだけです。関数は、異なるサイズの配列も受け入れる必要があります。たとえば、[10][10]
および です[5][5]
。どうすればこれを実行できますか?
ベストアンサー1
2D 配列を関数に渡す方法は 3 つあります。
パラメータは2次元配列です
int array[10][10]; void passFunc(int a[][10]) { // ... } passFunc(array);
パラメータはポインタを含む配列である
int *array[10]; for(int i = 0; i < 10; i++) array[i] = new int[10]; void passFunc(int *a[10]) //Array containing pointers { // ... } passFunc(array);
パラメータはポインタへのポインタである
int **array; array = new int *[10]; for(int i = 0; i <10; i++) array[i] = new int[10]; void passFunc(int **a) { // ... } passFunc(array);