• ベストアンサー

new演算子とインクリメント

#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; との違いがあれば教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • yatokesa
  • ベストアンサー率40% (201/496)
回答No.1

>これで0が出力されるけど というところが腑に落ちないのですが。 >*p = 1; を *p += 1; にする 問題ありませんよ。この場合ポインタのインクリメントではなく (*p) のインクリメントですし、なんら問題ありません。 掲載されたソースに問題は見あたりません。ソースはこれで全部でしょうか? また、newで str にアドレスが返されているか確認してみてください。

A__
質問者

お礼

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

すると、全ての回答が全文表示されます。

関連するQ&A