C言語ならアタシに聞きなさい<36>
■ このスレッドは過去ログ倉庫に格納されています
0149デフォルトの名無しさん
NGNGこれは丸暗記するしか無し
で
char a[] = "abc"; /* Statement1 */
char *p = "abc"; /* Statement2 */
となるとイメージ的にはこんな感じ
罫線多少ズレるけど許して
a[0] a[1] a[2] a[3]
.┏━━┯━━┯━━┯━━┓
a┃char.│char.│char│char.┃
.┗━━┷━━┷━━┷━━┛
Statement2 が ↑ ↑ ↑ ↑Statement1 が実行
実行されるたびに .│ │ │ │されるたびにコピー
. ┏━━━┓アドレスをセット ┌──┬──┬──┬──┐
p┃char * ┃←──────.│ 'A' │ 'B' │ 'C' │ '\0'.│←どっかの変更不能
. ┗━━━┛ └──┴──┴──┴──┘ なメモリ領域
p[0] p[1] p[2] p[3]
なお、a と p はそれぞれ配列型 (char[4]) とポインタ型 (char*) で全然別の型
でも関数とかに渡すと配列型はその最初の要素へのポインタ型 (この場合は
char*) に成り下がる
>>133
> sizeof(p)とsizeof(a)
この場合はどっちも 4 だからよくわからない
■ このスレッドは過去ログ倉庫に格納されています