ポインタに関する質問です1
Posted: 2009年6月24日(水) 21:00
こんにちは。お世話になっております。
現在ポインタの勉強をしていますがエラーの意味がわからず質問させていただきました。
#include <stdio.h>
int main(void){
int i, j;
int ma[3][2];
for(i=0; i<3; i++){
for(j=0; j<2; j++){
printf("ma[%d][%d] = %p\n", i, j, &ma[j]);
}
}
printf("\n");
printf("maのアドレス:%p\n", &ma);
int *p_ma;
printf("p_maのアドレス:%p\n", &p_ma);
// (★)
p_ma = &ma;
printf("p_maのアドレス:%p\n", &p_ma);
return 0;
}
(★)の部分で
error C2440: '=' : 'int (*)[3][2]' から 'int *' に変換することはできません。(新しい動作 ; ヘルプを参照)
指示された型は関連がありません; 変換には reinterpret_cast、 C スタイル キャストまたは関数スタイルのキャストが必要です。
というメッセージが表示され実行に失敗します。
p_maというポインタを宣言しておいて、maの先頭配列をコピーしようとしているだけですのになぜ失敗するのでしょう。
エラーコメントの意味から判断する力もないので、どなたか助けてください。
現在ポインタの勉強をしていますがエラーの意味がわからず質問させていただきました。
#include <stdio.h>
int main(void){
int i, j;
int ma[3][2];
for(i=0; i<3; i++){
for(j=0; j<2; j++){
printf("ma[%d][%d] = %p\n", i, j, &ma[j]);
}
}
printf("\n");
printf("maのアドレス:%p\n", &ma);
int *p_ma;
printf("p_maのアドレス:%p\n", &p_ma);
// (★)
p_ma = &ma;
printf("p_maのアドレス:%p\n", &p_ma);
return 0;
}
(★)の部分で
error C2440: '=' : 'int (*)[3][2]' から 'int *' に変換することはできません。(新しい動作 ; ヘルプを参照)
指示された型は関連がありません; 変換には reinterpret_cast、 C スタイル キャストまたは関数スタイルのキャストが必要です。
というメッセージが表示され実行に失敗します。
p_maというポインタを宣言しておいて、maの先頭配列をコピーしようとしているだけですのになぜ失敗するのでしょう。
エラーコメントの意味から判断する力もないので、どなたか助けてください。