static和const在编程中都是常用关键字,但它们的核心用途截然不同:static用于控制变量的存储周期和作用域,而const用于限定变量不可修改。 static修饰的变量在程序生命周期内只初始化一次,并保持其值;const修饰的变量一旦初始化后就不能被重新赋值。在具体应用中,static常用于实现单例模式、计数器或函数内部持久化状态,而const常用于定义常量、保护参数不被修改或实现只读接口。理解两者的区别能帮助开发者写出更安全、高效的代码。

【常见问题】
问题1:static和const可以同时修饰一个变量吗?
回答1:可以。例如 `static const int a = 10;` 表示该变量具有静态存储期且值不可修改,常用于定义模块内的常量。
问题2:static和const在类成员中分别有什么作用?
回答2:static成员属于类本身而非对象,所有实例共享;const成员函数承诺不修改对象状态。两者结合可用于定义类级别的只读标识符。
问题3:static和const在全局变量中使用时有何区别?
回答3:全局static变量将作用域限制在当前文件内,避免链接冲突;全局const变量默认具有内部链接(C++中),但在C语言中需配合static才能实现文件内可见。
问题4:static和const在函数参数中如何应用?
回答4:const用于保护参数不被修改(如 `void func(const int p)`);static不能用于函数参数,但可用于函数内部局部变量,使其保持状态。
问题5:static和const在内存分配上有什么区别?
回答5:static变量存储在静态存储区,程序启动时分配,结束时释放;const变量根据存放位置存储在常量区或栈区,但const本身不决定存储位置,只限制修改权限。


