聲明存儲類
回答
當你聲明它爲const時,你不能修改它。
const int a = 5;
a = 6;
不編譯(表達式必須是可修改的左值)。
const int a = 4;
是編譯器不會讓你改變的變量。
靜態限定符更改變量行爲的方式。具體而言,這意味着變量在程序開始執行時「分配」,只有在程序終止時才釋放。特別是靜態類變量保持其狀態與實例化對象無關。函數中的靜態變量在函數調用之間保持其狀態。全局常量上的靜態限定符在這種情況下是冗餘的,僅用於確定內部/外部鏈接。
什麼是「類變量」? (問題標記爲c,而不是C++。) – 2013-05-01 19:05:00
在C中,全局常量上的靜態限定符也不是多餘的。 – 2013-05-01 19:44:13
我想在C中看到關於「全局常量」的章節和經文。 – 2013-05-01 19:44:35
當你定義a
與const int a = 4;
,你不應該變化a
,但不是必需的編譯器,以防止你這樣做。如果您嘗試直接修改a
(如a = 5;
),編譯器應生成診斷消息,但還有其他方法可以嘗試修改a
編譯器不一定會捕獲的內容,例如* (int *) &a = 5;
。如果你這樣做,C標準沒有定義結果行爲。添加static
到定義不會改變這一點。
好的指出,它不能保證。它不是變量上的寫保護選項卡,就像您可能希望的那樣。 – 2013-05-01 19:43:51
- 1. 此聲明沒有存儲類或類型說明符
- 2. VC++ - 該聲明沒有存儲類或類型說明符
- 3. 聲明沒有存儲類或類型說明符
- 4. 鉛與存儲聲明
- 5. 聲明存儲過程
- 6. 存儲外部聲明
- 7. 「此聲明在C++中沒有存儲類或類型說明符」
- 8. C++:錯誤:這個聲明沒有存儲類或類型說明符
- 9. C++錯誤此聲明沒有存儲類或類型說明符
- 10. SQL Server存儲過程聲明變量
- 11. 在聲明中存儲信息
- 12. 可存儲的空數據聲明
- 13. 使用HttpSessionState存儲令牌/聲明
- 14. 存儲過程中的Firebird CASE聲明
- 15. 聲明SYS_REFCURSOR和ROWTYPE在存儲過程
- 16. if else在存儲過程中聲明?
- 17. 存儲過程如果/然後聲明
- 18. MySQL存儲過程聲明問題
- 19. 在存儲過程中聲明變量
- 20. 幫手聲明阻止外部存儲
- 21. 存儲過程聲明錯誤
- 22. 你在哪裏存儲你的聲明
- 23. MySQL存儲過程:遊標聲明
- 24. 準備好聲明與存儲過程
- 25. 如果在存儲過程中聲明
- 26. 未聲明存儲過程主鍵
- 27. 聲明存儲在集合中的類型(文字)的變量
- 28. 在存儲過程聲明中嵌套創建類型T-SQL
- 29. 聲明與定義的C++存儲類和限定符規則
- 30. C2071非法存儲類,外部載體在類中聲明和其他類
不完全正確。你可以用編譯器不會捕獲的方式通過指針間接修改它。 – 2013-05-01 19:48:12