- Published on
变量说明符
- Authors
- Name
- Yanbin
- @ybtaimu
const
const说明符表示变量是只读的,不得被修改
const有两种写法,含义是不一样的。
- 如果
const在*前面
,表示指针指向的值不可修改
。
// const 表示指向的值 *x 不能修改
int const * x
// 或者
const int * x
下面示例中,对x指向的值进行修改导致报错。
int p = 1
const int* x = &p;
(*x)++; // 报错
- 如果
const在*后面
,表示指针包含的地址不可修改
// const 表示地址 x 不能修改
int* const x
下面示例中,对x进行修改导致报错。
int p = 1
int* const x = &p;
x++; // 报错
static
用于局部变量(位于块作用域内部)。
static
用于函数内部声明的局部变量时,表示该变量的值会在函数每次执行后得到保留, 下次执行时不会进行初始化,就类似于一个只用于函数内部的全局变量
用于全局变量(位于块作用域外部)
static
用于函数外部声明的全局变量时,表示该变量只用于当前文件,其他源码文件不可以引用该变量,即该变量不会被链接(link)
。
static修饰的变量,初始化时,值不能等于变量,必须是常量
int n = 10;
static m = n; // 报错
上面示例中,变量m有static修饰,它的值如果等于变量n,就会报错,必须等于常量。
extern 说明符
当前文件还可以使用其他文件定义的变量
,这时要使用extern
说明符,在当前文件中声明,这个变量是其他文件定义的
extern int myVar;
上面示例中,extern
说明符告诉编译器,变量myvar是其他脚本文件声明的,不需要在这里为它分配内存空间。
由于不需要分配内存空间,所以extern声明数组时,不需要给出数组长度
extern int a[];