SSブログ

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)
#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;
}

nice!(0) 

nice! 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。