2次元配列の関数渡し。 [C++]
disp が正統な書き方?
disp2では
assignment from incompatible pointer type
が取れないけれど、とりあえず、動いた。
配列のキャストはエラーになるので、ギブアップ。
disp3はエラーは出ないが、別ファイルにするときにプロトタイプの書き方が?
void disp3(int dt[*][*], int n,int m);
では次のwarningとエラーが出る
warning: GCC does not yet properly implement `[*]' array declarators
error: parse error before "int"
で、配列の要素数を先にしてOK。(disp4)
disp2では
assignment from incompatible pointer type
が取れないけれど、とりあえず、動いた。
配列のキャストはエラーになるので、ギブアップ。
disp3はエラーは出ないが、別ファイルにするときにプロトタイプの書き方が?
void disp3(int dt[*][*], int n,int m);
では次のwarningとエラーが出る
warning: GCC does not yet properly implement `[*]' array declarators
error: parse error before "int"
で、配列の要素数を先にしてOK。(disp4)
#include#include void disp(int dt[][5]){ // notice to specify the size of array! int i,j; for (i=0; i<3; i++){ for(j=0; j<5; j++){ printf("%d ",dt[i][j]); } printf("\n"); } } // this gives warining but works anyway void disp2(int **dt0,int n){ int (* dt)[n]; dt = dt0; int i,j; for (i=0; i<3; i++){ for(j=0; j<n; j++){ printf("%d ",dt[i][j]); } printf("\n"); } } //void disp3(int dt[*][*],int n int m); void disp3(dt,n,m) int m,n; int dt[m][n]; { int i,j; for (i=0; i<m;; i++){ for(j=0; j<<; j++){ printf("%d ",dt[i][j]); } printf("\n"); } } void disp4(int n, int m, int dt[m][n]); void disp4(int n, int m, int dt[m][n]){ int i,j; for (i=0; i ≤ m; i++){ for(j=0; j < n; j++){ printf("%d ",dt[i][j]); } printf("\n"); } } int main(int argc,char ** argv){ int a[3][5] = { {11,12,13,14,15}, {16,17,18,18,20}, {21,22,23,24,25} }; disp(a); disp2((int **)a,5); disp3(a,5,3); disp4(5,3,a); return EXIT_SUCCESS; }
2009-01-21 01:17
nice!(0)