C言語なら俺に聞け(入門編)Part 71
■ このスレッドは過去ログ倉庫に格納されています
0196デフォルトの名無しさん
2010/10/15(金) 19:01:34*p と書くと、p の指すアドレスに保存されてるデータ。
たとえば char c = 'A'; で、
変数 c の、メモリー中での場所が、たとえば 0x1234 なら、
char* p;
p = &c; で,変数 p に記録される数字も 0x1234 になる。
0x1234 の場所に、実際に記録されてるデータは 'A'
A は、数字に直すと65。 変数 c には(メモリ番地0x1234の場所には)65という数字が記録されている。
p と書くと 0x1234 という数字を参照することになるので、p+2 なら 0x1234 + 2 = 0x1236 となる。 これなら c の +2 先のアドレスと同じ数字。
一方、*p と書くと 変数c(メモリ番地0x1234の場所)に記録されている65という数字を参照することになるので、
*p+2 は 65 + 2 という意味なので、 67 という数字を指す。
printf の %c に 67 という数字を渡すと C と表示される。 (「67ならCと表示する」という決まりなので)
0x1234 + 2 の 0x1236 の場所に、自動的に C (数字の67)が記録されたりはしてないと思います。
■ このスレッドは過去ログ倉庫に格納されています