C言語なら俺に聞け(入門篇) Part 7
■ このスレッドは過去ログ倉庫に格納されています
0289デフォルトの名無しさん
2007/02/07(水) 03:25:53p-s+1を一度pにして実行してみて欲しい。
こちらの環境では12番目〜が2293459番目で〜になり
17番目で〜が2293464番目で〜と表示される。
あなたの環境でも同じ番号には成らずとも�dでもない桁数での表示なる。
s[]はs[0]をスタートにしてI love dog and cat.と終端文字'\0'の19個分、s[0]〜s[18]まで用意される。
p-s+1で行っているのはprintf("%d文字目で発見しました。\n",p-s+1);実行時の
pのアドレス番地からスタート地点s[0]のアドレス番地を引いた数+1を行う.
アドレス番地s[0]は必ずしも0番から始まっているわけではないので上記で表示された�dでもない番地は
実際に12番目と17番目の'a'が入っているアドレス番地になる。
上記での例で行くとs[0]の実際の番地は2293448番地となりここをスタート番地として動く。
p-s+1で実際に計算してみると
2293459番地(pの現在番地)-2293448番地(スタート番地)+1
で答え12を引き出すことが出来る。
■ このスレッドは過去ログ倉庫に格納されています