K.Maebashi's BBS 投稿フォーム
ハンドル名
件名
Link
>昨晩は「寒いから暖房が効くまで布団の中で本でも読んでよう」と思いつつ気が付いたら朝でした。こんなのばっか。 > >>>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]と同じものが見えます。 > > > >
spamよけのため、ここに「ほげぴよ」と入力してください。
削除パスワード :
クリック!