是什么区别static const
和const
? 例如:
static const int a=5;
const int i=5;
他们之间有什么区别吗? 你什么时候会使用一个比其他?
是什么区别static const
和const
? 例如:
static const int a=5;
const int i=5;
他们之间有什么区别吗? 你什么时候会使用一个比其他?
所不同的是联动。
// At file scope
static const int a=5; // internal linkage
const int i=5; // external linkage
如果i
对象没有定义它的转换单元之外使用,则应在声明它static
符。
这使得编译器(潜在地)执行进一步的优化,并通知该对象不是其翻译单元以外使用的读者。
静态确定的可视性的功能之外,或一个变量寿命内。 所以它无关,与常量本身。
常量意味着它已经被初始化后,你不改变的值。
在函数内部静态指变量将之前和之后的功能已经结束存在。
一个功能的静态外意味着符号标记静态的范围仅限于.c文件,并且不能在其外部看到。
技术上(如果你想看看这件事),静态是一个存储说明符和const是一个类型限定符。
这取决于这些定义是否是一个函数或不是内部。 一个函数外的情况下,答案是由ouah给出以上。 内部的功能的影响是不同的,通过下面的例子中示出的:
#include <stdlib.h>
void my_function() {
const int foo = rand(); // Perfectly OK!
static const int bar = rand(); // Compile time error.
}
如果你想有一个局部变量是“真常,”你必须定义它不仅仅是“常量”,而是“静态常量”。