【初心者歓迎】C/C++室 Ver.50【環境依存OK】
at TECH
[
2ch
|
▼Menu
]
■コピペモード
□
スレを通常表示
□
オプションモード
□このスレッドのURL
■項目テキスト
50:デフォルトの名無しさん 08/03/15 11:45:09 >>48 >ローカルでポインタのポインタを作る場合って、 >2回newしないといけないのでしょうか? ローカル変数としてポインタのポインタを作りたいだけなら、int **p; と宣言するだけでいい。 >それともポインタのポインタだけnewすれば、 >必要なメモリを全部ロックしてくれるんでしょうか? そんなことはない。自分でnewしたものしか確保されない。 そもそも>>48のコードを見ると、newしているとのはintとint*だけで、ポインタのポインタ(int**)はnewしていないが。 自分がやろうとしていることをうまく説明できていない、または 自分がその関数のなかで何をしたいのか整理できてないでしょ。 51:50 08/03/15 11:46:16 >そもそも>>48のコードを見ると、newしているとのはintとint*だけで、ポインタのポインタ(int**)はnewしていないが なんか変なこといってた。ゴメン、無視して。 52:デフォルトの名無しさん 08/03/15 12:00:24 何をやりたいのかよく分からないという点に間違いは無いから 完全に無視されても困るかな。 こういう関数があった場合、 void show(const int* const* array_2dim, int i_size, int j_size) { for(int i = 0; i < i_size; ++i) { for(int j = 0; j < j_size; ++j) { std::cout << array_2dim[i][j] << ", "; } std::cout << std::endl; } } こういう風に使うなら new なんて要らないし、 const int array0[] = { 1, 2, 3 }; const int array1[] = { 4, 5, 6 }; const int array2[] = { 7, 8, 9 }; const int* const array_2dim[] = { array0, array1, array2 }; show(array_2dim, 3, 3); こういう風に使うなら new を2回使う。 int** array_2dim = new int*[3]; for(int i = 0, n = 1; i < 3; ++i) { array_2dim[i] = new int[3]; for(int j = 0; j < 3; ++j, ++n) { array_2dim[i][j] = n; } } show(array_2dim, 3, 3);
次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
レスジャンプ
mixiチェック!
Twitterに投稿
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch
4868日前に更新/60 KB
担当:undef