★初心者にVisual C++を教えるスレ★ Part35
■ このスレッドは過去ログ倉庫に格納されています
0148デフォルトの名無しさん
2009/11/25(水) 23:01:502次元配列の関数へのアドレス渡しで困っています。
GCC ユーザーなもので、いまいちVisual系が解かりませんのでご教授願います。
以下は、行列 Matrix[50][10] をつくり、各要素に1を代入するソースなはずです。
/****************************************************/
#include <stdio.h>
void ALL_ONE(int *Px, int NofRow,int NofCol){
int i;
for (i = 0 ; i < NofRow*NofCol ; i++){
*(Px+i) = 1;
}
}
void main(void){
int Matrix[50][10];
ALL_ONE(&Matrix,50,10);
/*以下に対して各処理を続行*/
}
/****************************************************/
GCCでは incompatible pointer type の warning は出るものの、
コンパイルでき、結果が表示されます。
マイクロソフト、Visual C++ 2008 Expres Edition では、
コンパイルエラー
error C2664: 'ALL_ONE' : 1 番目の引数を 'int [50][10]' から 'int *' に変換できません。(新しい機能 ; ヘルプを参照) 指示された型は関連がありません。
変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。となってしまいます。どなたかたすけてください、お願いします。
■ このスレッドは過去ログ倉庫に格納されています