- ベストアンサー
2次元配列のポインタについての疑問
- 整数型行2列2の2次元配列の[1][0]は、ポインタでは3になるとおもっているのですが、ちがったでしょうか?
- 下記のソースでエラーが出ていて困っています。
- 99 09 と表示させたいのですが、どこに間違いがあるのでしょうか?
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
質問者さんの意図に、いちばん近い形にするとなると、こういう書き換えになるでしょうか? > *(array + 3) = 0; int *ptr = &array[0][0]; *(ptr + 3) = 0;
その他の回答 (4)
- wormhole
- ベストアンサー率28% (1626/5665)
>問題で、引数にアドレスを渡して中身を変えなければならない問題で、引数の形が int*型とintとintの3つの縛りを受けています。ポインタじゃない引数は行数と列数です。 それは問題が悪いような。 引数としては、1行辺りの列数も必要になるはずです。
- titokani
- ベストアンサー率19% (341/1726)
キャストすれば代入できないこともないけど、 int *array2=(int*)array; *(array2+3)=0; でも、 99 09 とは表示されないでしょう。 それに、このソースであれば、素直に array[1][0]=0; って書けばいいだけだと思うけど、そう書かないのはなんででしょうか?
- f272
- ベストアンサー率46% (8467/18126)
*(array + 3) = 0; ではなくて *(*array + 2) = 0; とか **(array + 1) = 0; とか書くんでしょ。 *(array + 3) = 0; だと左辺はint[2]で右辺はintだから変だよね。
- wormhole
- ベストアンサー率28% (1626/5665)
>整数型行2列2の2次元配列の[1][0]は、ポインタでは3になるとおもっているのですが、ちがったでしょうか? 「ポインタでは3になる」とはどういう意味ですか? >下記のソースでエラーが出ていて困っています。 出ているエラーメッセージくらい書きましょう。 また「エラー」とひとくくりにするのではなく、そのエラーメッセージを読み解く努力をするようにしましょう。 「エラー」とひとくくりにしている間は自分でエラーを解決できるようには絶対になりません。 >と表示させたいのですが、どこに間違いがあるのでしょうか? *(array + 3) = 0; エラーメッセージも、そこを指しているはず。 上記を書き換えると array[3] = 0; なのですが、どこがおかしいかわかりませんか?
補足
回答有難うございます。 問題で、引数にアドレスを渡して中身を変えなければならない問題で、引数の形が int*型とintとintの3つの縛りを受けています。ポインタじゃない引数は行数と列数です。