2017-08-13 64 views
0

字符串文字是一個左值。如何將字符串文字用作其他左值?

左值可採用:

  1. 作爲操作數的地址的操作(除非左值表示一比特字段或被宣佈寄存器)。

  2. 作爲前/後增量和減量運算符的操作數。

  3. 作爲成員訪問(點)運算符的左側操作數。

  4. 作爲賦值和複合賦值運算符的左側操作數。

  5. 爲...(其中任何一個值可以作爲,但我錯過名單)

我想知道如何字符串字面可以作爲在C以上運營商的操作數程序?

謝謝。

+1

這有助於說字符串文字是隻讀的左值? – Evert

+0

C99及更高版本(或帶有擴展名的更早版本)提供了*複合文字*,它允許您使用一些*輕微*(或*編程legerdemain *)創建一個可修改的左值,否則將創建文字,例如'char * literal =(char []){「my string literal」};'。是的,它只是一個數組,但它也是一個文字。 –

回答

2

您的項目符號2和4需要可修改的左值,它排除了數組。字符串文字是數組,所以它們不是可修改的左值。

第一個是確定的,允許&"hello",雖然這是不常用的用法。

第三個,.的左側必須有struct類型,而字符串文字不是。但是,請注意.的左側操作數實際上並不需要是左值。

相關問題