声明存储类
回答
当你声明它为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. VC++ - 该声明没有存储类或类型说明符
- 2. 声明存储过程
- 3. 准备好声明与存储过程
- 4. MySQL存储过程:游标声明
- 5. MySQL存储过程声明问题
- 6. SQL Server存储过程声明变量
- 7. 使用HttpSessionState存储令牌/声明
- 8. 在存储过程中声明变量
- 9. 帮手声明阻止外部存储
- 10. 存储过程中的Firebird CASE声明
- 11. 在声明中存储信息
- 12. 存储过程如果/然后声明
- 13. if else在存储过程中声明?
- 14. 可存储的空数据声明
- 15. 在存储过程声明中嵌套创建类型T-SQL
- 16. C2071非法存储类,外部载体在类中声明和其他类
- 17. PHP类声明
- 18. 声明该类
- 19. 类声明
- 20. Java类声明
- 21. C++类声明
- 22. Java类型声明
- 23. 获取类声明
- 24. Data.Map类型声明
- 25. 无类型声明
- 26. 奇怪类声明
- 27. 声明typedef类型
- 28. Storage.prototype.setObject声明类型
- 29. 声明的类型
- 30. 声明类/关闭
不完全正确。你可以用编译器不会捕获的方式通过指针间接修改它。 – 2013-05-01 19:48:12