C言語の第一歩
■ このスレッドは過去ログ倉庫に格納されています
0408デフォルトの名無しさん
NGNG例えば
char s[1];
s[0] = "foo";
s[1] = "bar";
とした時に、
確認したいのは…
1.s[0]は"foo"の先頭文字('f')のアドレスを指していて、s[1]は"bar"の先頭文字('b')の先頭文字のアドレスを指している
2.変数名は配列の先頭アドレスになるので、*s {配列sの先頭アドレスを参照} は s[0] {配列sの先頭要素}と等価である
3.*(s+1) {配列sの先頭アドレスを1要素分進めたアドレスを参照} は s[1] {配列sの2番目の要素} と等価になる
で、疑問
その1:
メモリ内で、"foo"と"bar"が必ずしも順番に並ぶとは限らない?
(必ず |f|o|o|\0|b|a|r|\0| になるとは保証されていないのか。)
その2:
*s + 1 という式の「1」が意味するところ
(s[0]に格納されているアドレスを 1番地 進めたアドレス? or char1文字分進めたアドレス?)
エロイ人、教えてください。
■ このスレッドは過去ログ倉庫に格納されています