このサイトの「C で多次元配列を渡す」の例を読みました。
これは char 配列を使用した優れた例であり、多くのことを学びました。動的に割り当てられた 1 次元整数配列を処理する関数を作成し、その後、多次元整数配列を処理する別の関数を作成して、同じことを行いたいと考えています。関数への戻り値としてそれを行う方法を知っています。しかし、このアプリケーションでは、関数の引数リストでそれを行う必要があります。
上記の例のように、整数配列へのポインターを要素数「num」(または 2D 配列関数の場合は「row」と「col」など) と共に関数に渡したいと思います。 )。ここで他の例の作り直されたバージョンを入手しましたが、これを機能させることができません。試してみてください (その例からの新しい、または変更されたコード行はマークされています)。これを解決する方法を知っている人はいますか?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define ELEMENTS 5
void make(char **array, int **arrayInt, int *array_size) {
int i;
char *t = "Hello, World!";
int s = 10; // new
array = malloc(ELEMENTS * sizeof(char *));
*arrayInt = malloc(ELEMENTS * sizeof(int *)); // new
for (i = 0; i < ELEMENTS; ++i) {
array[i] = malloc(strlen(t) + 1 * sizeof(char));
array[i] = StrDup(t);
arrayInt[i] = malloc( sizeof(int)); // new
*arrayInt[i] = i * s; // new
}
}
int main(int argc, char **argv) {
char **array;
int *arrayInt1D; // new
int size;
int i;
make(array, &arrayInt1D, &size); // mod
for (i = 0; i < size; ++i) {
printf("%s and %d\n", array[i], arrayInt1D[i]); // mod
}
return 0;
}