C言語ではアドレス演算子を使用した場合”&a”で生成されるのは配列全体へのポインタとのことですが、並列全体へのポイントとはどんな値なのでしょうか?
例えば、"a"と書いたらそれは配列"a"の要素の先頭のポインタを表すのはわかるのですが、配列全体のポインタと何なのでしょう。
c
1int a[5];
という配列を作成したら、メモリの何処かに”a”の配列全体の大きさを表す数字が保存され、"&a"はその数字を指すポインタということでしょうか?
よろしくお願いいたします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答5件
0
ベストアンサー
並列全体へのポイントとはどんな値なのでしょうか?
アドレスそのものはa
と書いた時(先頭要素へのポインタ)と変わりませんが、型が違います。
a
→int *
&a
→int (*)[5]
(「int
が5つの配列へのポインタ」、と読みます)
投稿2020/09/30 05:51
総合スコア146018
0
メモリの何処かに”a”の配列全体の大きさを表す数字が保存され、"&a"はその数字を指すポインタということでしょうか?
この辺を見るに、そもそもポインタとは何かを理解していないように見えます。
(コンパイルする以前に)ポインタが持っている情報はアドレスだけではなく、それが指している対象の型が何かの情報も持ちます。
配列先頭の要素へのポインタには、その要素のアドレスと、指しているのがint型だという情報があります。
同様に、配列全体へのポインタには、その配列のアドレス(これは先頭要素のアドレスと同じです)と、指しているのがint5個の配列だという情報があります。
コンパイルすると、指す型が何だったかの情報は直接は含まれませんが、指す型に応じた操作をする機械語命令が生成されます。
投稿2020/09/30 12:44
総合スコア3047
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
「配列全体へのポインタ」とはどこから出てきた言葉でしょうか。
一般的にはあまり使わないと思いますが、使った場合でも、
配列の先頭アドレス=配列全体へのポインタ
と考えて差し支えないと思います。
サイズさえわかれば配列全体に参照できますよ、という意味でしょうかね。
尚、ポインタはあくまでもアドレス値であるので、サイズ情報は持っていません。
投稿2020/09/30 05:48
総合スコア17000
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/30 05:54
2020/09/30 05:56
2020/09/30 05:59
2020/09/30 06:03
0
配列全体のポインタと何なのでしょう
~~
配列全体のポインタなどありません。
~~
ありました。。。
配列"a"の要素の先頭のポインタを表す
これが正解です。
投稿2020/09/30 05:48
編集2020/09/30 06:08総合スコア7918
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/30 05:52
2020/09/30 05:53
2020/09/30 06:07 編集
2020/09/30 23:06
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/30 06:02