【メモ】C++でポインタの動的配列
確保するときに悩んだのでもしかしたら需要あるかなと思って書いておく。
ポイントはポインタのポインタにするところとnew hoge*[10]みたいに*を型の後におくところ。最初 new *hoge[10]みたいにしてて上手くいかなかった。あくまでhoge*を10個確保するという意味なのね。わかってしまえばなんともないが、わかるまでは悩む。たぶんこれはC++の記法の問題も絡んでくるのかと。C言語だと
hoge* val;
みたいに宣言するがC++では
hoge *val;
が一般的だからかな。んでコンパイラとしては基本前者解釈。僕もそこらへんがあやふやだった。いい勉強になった。
最後に一応サンプルプログラム。
//サンプルプログラム #include <iostream> #include <string> int main(){ int **hoge;//配列 int foo=1;//操作される変数 hoge = new int*[10]; for(int i=0;i<10;i++){ hoge[i]=&foo; } *(hoge[2])=3; std::cout <<foo<<std::endl; delete hoge; }