• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:2次元配列のポインタ)

2次元配列のポインタについての疑問

このQ&Aのポイント
  • 整数型行2列2の2次元配列の[1][0]は、ポインタでは3になるとおもっているのですが、ちがったでしょうか?
  • 下記のソースでエラーが出ていて困っています。
  • 99 09 と表示させたいのですが、どこに間違いがあるのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • harawo
  • ベストアンサー率58% (3742/6450)
回答No.5

質問者さんの意図に、いちばん近い形にするとなると、こういう書き換えになるでしょうか? > *(array + 3) = 0; int *ptr = &array[0][0]; *(ptr + 3) = 0;

その他の回答 (4)

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.4

>問題で、引数にアドレスを渡して中身を変えなければならない問題で、引数の形が int*型とintとintの3つの縛りを受けています。ポインタじゃない引数は行数と列数です。 それは問題が悪いような。 引数としては、1行辺りの列数も必要になるはずです。

  • titokani
  • ベストアンサー率19% (341/1726)
回答No.3

キャストすれば代入できないこともないけど、 int *array2=(int*)array; *(array2+3)=0; でも、 99 09 とは表示されないでしょう。 それに、このソースであれば、素直に array[1][0]=0; って書けばいいだけだと思うけど、そう書かないのはなんででしょうか?

satisfied999
質問者

補足

回答有難うございます。 問題で、引数にアドレスを渡して中身を変えなければならない問題で、引数の形が int*型とintとintの3つの縛りを受けています。ポインタじゃない引数は行数と列数です。

  • f272
  • ベストアンサー率46% (8529/18254)
回答No.2

*(array + 3) = 0; ではなくて *(*array + 2) = 0; とか **(array + 1) = 0; とか書くんでしょ。 *(array + 3) = 0; だと左辺はint[2]で右辺はintだから変だよね。

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.1

>整数型行2列2の2次元配列の[1][0]は、ポインタでは3になるとおもっているのですが、ちがったでしょうか? 「ポインタでは3になる」とはどういう意味ですか? >下記のソースでエラーが出ていて困っています。 出ているエラーメッセージくらい書きましょう。 また「エラー」とひとくくりにするのではなく、そのエラーメッセージを読み解く努力をするようにしましょう。 「エラー」とひとくくりにしている間は自分でエラーを解決できるようには絶対になりません。 >と表示させたいのですが、どこに間違いがあるのでしょうか? *(array + 3) = 0; エラーメッセージも、そこを指しているはず。 上記を書き換えると array[3] = 0; なのですが、どこがおかしいかわかりませんか?

関連するQ&A

専門家に質問してみよう