K.Maebashi's BBS

ご自由に書き込んでください。雑談も可。
テスト書き込みの類はテスト用掲示板にどうぞ

[日付順表示] [日付順インデックス] [スレッド順インデックス]

新規投稿 | 開設者ホームページへ戻る | ヘルプ

[929] Re:774RRさん、お返事ありがとうございます。
投稿者:(ぱ)こと管理人
2007/02/20 02:13:25

昨晩は「寒いから暖房が効くまで布団の中で本でも読んでよう」と思いつつ気が付いたら朝でした。こんなのばっか。 >>buf[10] で、無いオブジェクトの中を見に行っている時点で許されない。 >>*(cp+10) も同様。 >>ただし &buf[10] や cp+10 は許されるというあたりが微妙なところであったりする。 > >明日試してみます。 ええと、試してみたところで「動いてしまう」可能性がそれなりにあります。 Cでは、配列の範囲を超えたところをアクセスしても、普通はエラー等にはならず、ずっと離れたところでプログラムがクラッシュしたりします。 それはさておき、「たけ」さんのサンプルプログラムでは、代入もしていない「buf[10]」の中身をいきなり参照していますが、それで「'1'」が入っていることを期待しているわけではないですよね? そもそも本当は何を聞きたかったのかが疑問です。 774RRさんのご指摘どおり、char buf[10];で宣言した配列のbuf[10]は参照できませんが、 char buf[10]; char *cp; cp = buf; として、*(cp + 3)とかを参照するのは合法です。buf[3]と同じものが見えます。 ただし、「*(cp + 3)」のようなわかりにくい書き方をするよりは、cp[3]と書いたほうがよいでしょう。これもbuf[3]と同じものが見えます。
[この投稿を含むスレッドを表示] [この投稿を削除]