【初心者歓迎】C/C++室 Ver.48【環境依存OK】at TECH【初心者歓迎】C/C++室 Ver.48【環境依存OK】 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト813:デフォルトの名無しさん 08/02/16 23:31:50 お聞きしたいのですが 参考書に array[index]の結果は*((array)+(index))と同じなので char ch = p[3]; と char ch = 3[p]; (pはポインタ) は、同じ処理だと書いてあったのですが、データ型がintの場合は3が12バイト分になってdoubleの場合は3が24バイト分になるはずなので 一概に「3+pに格納されてるアドレスの数値」って言えない気がしたのですが何か考え方が間違っているのでしょうか? 814:デフォルトの名無しさん 08/02/16 23:33:59 *(p+3) と *(3+p) で結果が違うわけなかろう 815:デフォルトの名無しさん 08/02/16 23:35:29 >>813 ポインタとアドレスは違う(似ているからややこしいが) char a[2]; double b[2]; printf("%p %p\n", &a[0], &a[1]); printf("%p %p\n", &b[0], &b[1]); 816:デフォルトの名無しさん 08/02/16 23:40:10 例えば p の示すアドレスが 0xb1832100 の時、 p が char* なら p + 3 は 0xb1832103 に、 p が int* (int は4バイトとする)なら p + 3 は 0xb183210c に、 p が double* (double は8バイトとする)なら p + 3 は 0xb1832118 になる。 だから、一概にそう言える。 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch