再度よろしくお願いいたします。
int *pt[5][3]
上記の二次元ポインタ配列を関数に渡す(実引数)にはどうしたらよいのでしょうか?
2次元のポインタ配列
Re:2次元のポインタ配列
ちょっとした例です。 func()は、列の数が3である行列を受け取れます。 行の数は、引数で与えます。 #include <stdio.h> #include <stdlib.h> #define M1 (5) #define M2 (10) #define N (3) void func(int *(*p)[N], int m) { int i, j; for (i = 0; i < m; i++) { for (j = 0; j < N; j++) printf("%10d", *p[j]); putchar('\n'); } printf("\n\n"); } int main(void) { int *pt1[M1][N], *pt2[M2][N], i, j; for (j = 0; j < N; j++) { for (i = 0; i < M1; i++) { pt1[j] = (int *) malloc(sizeof(int)); if (!pt1[j]) fprintf(stderr, "out of memory\n"), exit(1); *pt1[j] = i * 100 + j; } for (i = 0; i < M2; i++) { pt2[j] = (int *) malloc(sizeof(int)); if (!pt2[j]) fprintf(stderr, "out of memory\n"), exit(1); *pt2[j] = i * 10000 + j; } } func(pt1, M1); func(pt2, M2); for (j = 0; j < N; j++) { for (i = 0; i < M1; i++) free(pt1[j]); for (i = 0; i < M2; i++) free(pt2[j]); } return 0; }
Re:2次元のポインタ配列
> 上記の二次元ポインタ配列を関数に渡す(実引数)にはどうしたらよいのでしょうか?
素直にそのまま書けばよいです。
つまり,
素直にそのまま書けばよいです。
つまり,
void func (int *arg[5][3]);とでもしておけば,ptをそのまま渡せます。