|
> でもそれだと、配列のサイズがあらかじめ分かっていないとき(mallocで
> 宣言したとき等)に使えないですよね…何か方法は無いのでしょうか。
配列の先頭アドレスを引数として渡してもらった関数において、
その配列の要素数はわかりません。1次元だって同じです。
要素数もいっしょに渡しましょう。
#include <stdio.h>
void test(void *a, int n, int m)
{
int i, j;
double *p = a;
#define A(i, j) p[(i)*m + (j)]
for (i = 0; i < n; i++) {
for (j = 0; j < m; j++)
printf("%8g", A(i, j));
printf("\n");
}
#undef A
}
int main(void)
{
double a[3][4] = {
11, 12, 13, 14,
21, 22, 23, 24,
31, 32, 33, 34,
};
double b[2][3] = {
101, 102, 103,
201, 202, 203,
};
test(a, 3, 4);
puts("---");
test(b, 2, 3);
return 0;
}
|