![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
C言語のint (*)[5]型と参照についてです。
自分なりにまとめてみましたがこういう考え方で合っているでしょうか?
「型Tの配列」は「型Tへのポインタ」に常に置き換えられることと、シンタックスシュガーを条件に
int a[3][5];
int (*p)[5];
p=a;があるとする。
pはint(*)[5]型は、int型要素数5の配列へのポインタでありa[0]のアドレスが格納されている。
*pで、中身はint型要素数5の配列。ここで配列をポインタに置き換えてint型要素数5へのポインタとなる。a[ i ]と[ j ]のシンタックスシュガーを考慮し、*(p+i)+jにもう一つ間接参照演算子を適用して*(*(p+i)+j)となりint型の要素を参照できる。
それを利用してfor(i = 0;i < 15;i++){ を使って配列の要素を全て表示する場合、2次元配列が配列の配列だということをふまえると、pをインクリメントせず*((*p)+i)とすることもできる。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
あ, 「少なくともこの質問文において「インクリメント」はどこにも存在しない」は間違ってた.
for(i = 0;i < 15;i++)
で i をインクリメントしてるわ.
まあ p はどこでもインクリメントしてないけど.
そういえば「シンタックスシュガーを条件に」はなにに関係するんだっけ?
No.3
- 回答日時:
いちおう指摘しておくと
「型Tの配列」は「型Tへのポインタ」に常に置き換えられる
わけではないです (ポインタに変換されない状況も存在する).
そこ以外は OK... いや, 「pをインクリメントせず」のところはおかしいな. 少なくともこの質問文において「インクリメント」はどこにも存在しない.
No.1
- 回答日時:
>pはint(*)[5]型は、int型要素数5の配列へのポインタであり
根本的にここが間違っています
int (*p)[5];
これはintのポインタ型の配列です
配列のポインタ型ではなく
ポインタ型の配列です
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- C言語・C++・C# ポインタの型変換、どうやるんでしたっけ? 2 2022/03/28 11:00
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- C言語・C++・C# 関数ポインタの高速化のメリット 7 2023/05/05 20:15
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- Java Java・配列の問題です。 int 「」nums = new int「5」 ⤴︎ この5の事を言葉で 2 2023/06/21 22:30
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# 10人分の生徒の英語の点数{32,34,41,38,40,26,14,46,42,50} と数学の点 2 2022/05/26 21:31
- C言語・C++・C# このプログラミングの問題を教えて欲しいです。 キーボードから整数kを入力し、kが配列aの中に何個存在 2 2022/12/19 22:50
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語 配列の長さの上限
-
配列で格納したものをmsgboxで...
-
配列を使わずに、変数名を動的...
-
先頭アドレスとは何ですか?
-
VB.NETでテキストボックスをコ...
-
C# Listを使わずに2次元配列の...
-
C言語でのカンマ区切りについて
-
VBで構造体の配列を関数に渡す...
-
unsigned char配列への入力の仕方
-
配列の参照渡しで型が一致しま...
-
プログラミングの課題で「5人分...
-
なぜ配列は0から始まるのです...
-
配列同士の文字列の比較
-
C# 配列の変数宣言について。
-
c言語の __FILE__ について
-
多次元配列の引渡しについて
-
簡易暗号化プログラム(文字入れ...
-
C言語 変換指定%sについてです。
-
プログラム
-
【VBS】 フォルダ直下のファイ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語 配列の長さの上限
-
配列を使わずに、変数名を動的...
-
先頭アドレスとは何ですか?
-
配列で格納したものをmsgboxで...
-
C# 配列の変数宣言について。
-
テキストファイルから文字列を...
-
unsigned char配列への入力の仕方
-
ExcelVBAで質問です。離れた二...
-
配列の参照渡しで型が一致しま...
-
パイソンの
-
C# Listを使わずに2次元配列の...
-
C言語で特定列だけを抽出して配...
-
複数の選択範囲の行番号を個別...
-
【C言語】配列の中に配列を入れ...
-
メモリの初期値
-
VBで構造体の配列を関数に渡す...
-
Excel、VBAのユーザーフォーム...
-
配列をEraseしてもメモリが開放...
-
2次元配列を戻り値とする関数?
-
【速いブラインドタッチ】手を...
おすすめ情報
回答ありがとうございます。
https://detail.chiebukuro.yahoo.co.jp/qa/questio …
知恵袋の回答者さんたちが、int型n要素の配列へのポインタと書かれているのですが、自分の解釈の仕方が間違えているのでしょうか?
自分の中でのポインタ型の配列はint *a[5];の表記だと思っていたのですが…
そのほかにも間違えていそうなところがあればよろしくお願いします。