検索

ホームページ  >  に質問  >  本文

c++ - char* p="123"这句代码为什么是对的?

如题,C风格字符串,"123"不是const char *类型的常量么?为什么赋给一个普通指针是可以的呢?

迷茫迷茫2767日前992

全員に返信(7)返信します

  • 伊谢尔伦

    伊谢尔伦2017-04-17 15:20:09

    これを実行してもエラーは報告されませんが、p が指す文字列 123 を変更しようとすると、メモリ アクセス違反が発生します。 「123」は文字列定数であるため、読み取り専用の記憶領域に保存されます。 const char* が必須の理由は、プログラマーが誤って 123 を変更するのを防ぐためです。

    返事
    0
  • PHPz

    PHPz2017-04-17 15:20:09

    初心者向けの回答
    「123」は const char 型のオブジェクトです。 const char * p は右から左に読む必要があります。これは、p がポインターであり、指すオブジェクトが const char 型であることを意味します。これは正しくありません。 同様に、p が指すオブジェクトが const char である限り、最後に p = "456"; を追加しても問題ありません。

    返事
    0
  • PHPz

    PHPz2017-04-17 15:20:09

    char *p = "123"; は文字配列を表しますか?それは文字列

    です

    返事
    0
  • ringa_lee

    ringa_lee2017-04-17 15:20:09

    -Wall をコンパイルして追加すると、警告が表示されます。

    リーリー

    返事
    0
  • 大家讲道理

    大家讲道理2017-04-17 15:20:09

    char *p = "123"; 実際には、定数領域に文字列領域を確保し、文字ポインタ p を宣言し、文字列が配置されているメモリ領域を指す 2 つの処理になります。すぐに修正してください

    返事
    0
  • 巴扎黑

    巴扎黑2017-04-17 15:20:09

    C 言語が残した落とし穴

    返事
    0
  • ringa_lee

    ringa_lee2017-04-17 15:20:09

    これは c との互換性のために残されています

    返事
    0
  • キャンセル返事