プロが教えるわが家の防犯対策術!

#include <iostream.h>
main(){
char *str = new char[10];
memset(str, 0, 10);
char *p = str;
*p = 1;
printf("%x", *p);
delete [] str;
}

これで0が出力されるけど、*p = 1; を *p += 1; にすると
*p += 1; の部分の実行時にエラーでフリーズしました。
この場合、*p += 1; と書いてはだめなのですか?
*p = 1; との違いがあれば教えてください。

A 回答 (1件)

>これで0が出力されるけど


というところが腑に落ちないのですが。

>*p = 1; を *p += 1; にする
問題ありませんよ。この場合ポインタのインクリメントではなく (*p) のインクリメントですし、なんら問題ありません。

掲載されたソースに問題は見あたりません。ソースはこれで全部でしょうか?
また、newで str にアドレスが返されているか確認してみてください。
    • good
    • 0
この回答へのお礼

ごめんなさい。
ソースを省略して書いたから、もしかしたらこれだとエラーに
ならないかもしれないとも思っていました。
今試してみたらエラーになりませんでした。
フリーズしてOS再起動になってしまう状態だったから試すのも
時間かかって大変だったんです。
ありがとうございました。

お礼日時:2002/09/18 00:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!