#include <stdio.h> #include <string.h> int main(void) { char *s1 = "Hello"; int i; for (i = 0; i < strlen(s1); i++) { printf("%p\n", s1[i]); } printf("\n%p", s1); return 0; }
上記のコードを実行すると以下の出力結果が得られました。
00000048 ・・・① 00000065 0000006C ・・・② 0000006C ・・・③ 0000006F 0040A064 ・・・④
私のコーディングがおかしいのだと思いますが、
■質問(1) ①と④は配列の先頭アドレスであるため、同じ値になると思ったのですが、何故違う値になっているのでしょうか?
■質問(2) ②と③は何故同じアドレスなのでしょうか?
■質問(3) データ型はcharなのに何故1バイトずつアドレスが増加しないのでしょうか?
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/07/16 23:24