C言語によるプログラミング応用編という本で、ポインタ配列の様々な表現というところに載っていた箇所です。
2次元配列の表現とポインタ配列と配列へのポインタの表現を比較してみましょう。 --- 2次元配列 char a[2][3]; --- 表現 sizeofの値 「表現」によって指される対象 a 6 aの第0要素(要素を3個もつchar配列)へのポインタ a[0] 3 aの第0要素(char)へのポインタ a[0][0] 1 aの第0要素の最初の要素 --- ポインタ配列 char *a[2] --- 表現 sizeofの値 「表現」によって指される対象 a 8 ポインタaの第0要素(charへのポインタ)へのポインタ//Q1 a[0] 4 aの第0要素(charへのポインタ) //Q2 a[0][0] 1 aの第0要素が指すchar配列の最初の要素 --- 配列へのポインタ char (*a)[3] --- 表現 sizeofの値 「表現」によって指される対象 a 4 要素を3個もつcharへのポインタ //Q3 a[0] 4 そのchar配列の先頭要素(char)へのポインタ //Q4 a[0][0] 1 その先頭要素
以上が本に載っていた部分です。
質問です。
Q1~Q4までのsizeofの値がなぜそうなるのか教えてください。
Q2は、調べた所、ポインタが指ところが、int型で4バイトだから、そうなり、私の解釈で、char :a[2]により、全体はその2倍だからQ1は、8になると思いましたが、違うような気がします。
Q3は、要素を3個もつなら、sizeofは3になるのではないかと思うのですがなぜ4なのでしょう。
Q4もなぜそうなるのか教えてください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/07/24 03:01
2016/07/24 08:22