2017-08-13 11 views
0

文字列リテラルは左辺値です。文字列リテラルは他の左辺値としてどのように使用できますか?

左辺値を使用することができる。

  1. アドレスのオペレータ(左辺値はビットフィールドを指定するか、レジスタ宣言された場合を除く)のオペランドとして。

  2. をプリ/ポストインクリメントおよびデクリメント演算子のオペランドとして使用します。

  3. は、メンバアクセス(ドット)演算子の左側のオペランドになります。

  4. は、代入および複合代入演算子の左辺のオペランドになります。私は、文字列リテラルは、Cにおける上記の演算子のオペランドとして使用することができますどのように思っていました(値として使用することができますが、私はリストに見逃しては何も)

...など

  • プログラム?

    ありがとうございました。

  • +1

    文字列リテラルは読み取り専用の左辺値ですか? – Evert

    +0

    C99以降(またはそれ以前の拡張子)では*軽い*を使用してリテラルが作成される場合には修正可能な左辺値を作成するための手軽な*(または* programming legerdemain *)ビットを使用できる*複合リテラル*を提供します、例えば'char * literal =(char []){"文字列リテラル "};'はい、それは単なる配列ですが、リテラルでもあります。 –

    答えて

    2

    箇条書き2と4は、変更可能な左辺値(配列を除く)を必要とします。文字列リテラルは配列なので、変更可能な左辺値ではありません。

    最初の1つはOKですが、&"hello"は許可されていますが、これはまれな使用方法です。

    .の左側には、文字列リテラルではないstruct型が必要です。ただし、左オペランド.は実際には左辺値である必要はありません。

    関連する問題