--2100e4cead1de15f x-next-cache-tags: _N_T_/layout,_N_T_/blog/layout,_N_T_/blog/[...slug]/layout,_N_T_/blog/[...slug]/page,_N_T_/blog/c%E8%AF%AD%E8%A8%80/%E5%8F%98%E9%87%8F%E8%AF%B4%E6%98%8E%E7%AC%A6 vary: RSC, Next-Router-State-Tree, Next-Router-Prefetch 变量说明符 | YBinary
Published on

变量说明符

Authors

const

const说明符表示变量是只读的,不得被修改

const有两种写法,含义是不一样的。

  1. 如果const在*前面,表示指针指向的值不可修改
    // const 表示指向的值 *x 不能修改
    int const * x
    // 或者
    const int * x

下面示例中,对x指向的值进行修改导致报错。

int p = 1
const int* x = &p;

(*x)++; // 报错
  1. 如果const在*后面,表示指针包含的地址不可修改
// const 表示地址 x 不能修改
int* const x

下面示例中,对x进行修改导致报错。

int p = 1
int* const x = &p;

x++; // 报错

static

  1. 用于局部变量(位于块作用域内部)。 static用于函数内部声明的局部变量时,表示该变量的值会在函数每次执行后得到保留, 下次执行时不会进行初始化,就类似于一个只用于函数内部的全局变量

  2. 用于全局变量(位于块作用域外部) static用于函数外部声明的全局变量时,表示该变量只用于当前文件,其他源码文件不可以引用该变量,即该变量不会被链接(link)

static修饰的变量,初始化时,值不能等于变量,必须是常量

int n = 10;
static m = n; // 报错

上面示例中,变量m有static修饰,它的值如果等于变量n,就会报错,必须等于常量。

extern 说明符

当前文件还可以使用其他文件定义的变量,这时要使用extern说明符,在当前文件中声明,这个变量是其他文件定义的

extern int myVar;

上面示例中,extern说明符告诉编译器,变量myvar是其他脚本文件声明的,不需要在这里为它分配内存空间。

由于不需要分配内存空间,所以extern声明数组时,不需要给出数组长度

extern int a[];
--2100e4cead1de15f--