前提・実現したいこと
C言語のポインタについての学習の中で、下のようなソースコードの出力結果を考察するという問題がありました。
1つ目のprintfで表示される値はd[0]~d[3]までに格納されている値が順に出力されて12345678と出力されると予想したのですが、結果は(おそらくd[3]→d[0]の順)78563412と出力されました。
なにかポインタと配列の間に決まりがあるのでしょうか?教えてください!
出力結果
$ ./a.out *p = 78563412 *p = 1234
該当のソースコード
【C言語】
#include <stdio.h> #include <unistd.h> #include <stdlib.h> main() { char d[4]; int *p; p = (int *)&d[0]; d[0] = 0x12; d[1] = 0x34; d[2] = 0x56; d[3] = 0x78; printf("*p = %x\n",*p); *p = 0x1234; printf("*p = %x\n",*p); return 0; }
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/07/15 01:39