第6講 ポインタの学習
第4話 ポインタのポインタとは?
前話解答例
#pragma endregion
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^
e) {
//ポインタの宣言
int* a;
//変数の宣言
int i,j,k;
//ポインタの初期化(メモリ割り当て)
a=(int *)malloc;
//ポインタに内容を代入
for(i=0;i<60;i++)*(a+i)=i+1;
//文字変数の宣言
String^ w=L"";
//配列の宣言
int b[3][4][5];
//配列への代入
for(i=0;i<3;i++){
for(j=0;j<4;j++){
for(k=0;k<5;k++){
b[i][j][k]=*(a+20*i+5*j+k);
}
}
}
//表示
for(i=0;i<3;i++){
for(j=0;j<4;j++){
for(k=0;k<5;k++){
if(b[i][j][k]<10)w=w+L"0"+(b[i][j][k]).ToString()+L"
";
if(b[i][j][k]>=10)w=w+(b[i][j][k]).ToString()+L"
";
}
w=w+L"\n";
}
if(i==0)label1->Text=w;
if(i==1)label2->Text=w;
if(i==2)label3->Text=w;
w=L"";
}
}
};
}
続きは次話(明日更新します)ですが、予告だけしておきましょう。
int** a;
または
int **a;
と宣言するポインタです。
この場合、
**aが普通の変数、*aそのアドレスを収納するポインタ変数、さらに**aは*aのアドレスを収納するポインタのポインタ変数です。
?が浮かんでいますよね。
int *a;
と宣言したとき、aは変数*aのアドレスを収納するポインタ変数です。
変数である以上、アドレスを収納する箱が用意されているのです。
つまり、aにもアドレスが割り振られているのです。
ですから、
int **a;なら
第3話へ 第5話へ