C变量存储

Posted Debugor

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C变量存储相关的知识,希望对你有一定的参考价值。

今天写C的变量怎么在电脑中存储的

先讲3个概念,作用域,链接,存储时期

作用域:

函数内:一个函数内的变量(包括形参)作用域为函数的代码块内部,外面看不见。

函数外:函数块外部的变量是文件作用域的,在文件中都可见。

另外,if,while,for这些也一样,变量的作用域在代码块的内部。

链接:

空链接:代码块作用域和函数原型作用域(指的就是函数原型括号内的参数)的变量是空链接,不会链接到其他地方,是属于代码块私有的

文件作用域的变量(也就是定义在函数外的变量)可以是内部链接或外部链接

内部链接:可以在多文件程序中使用的文件作用域的变量 如static int =3

外部链接:可以在一个文件程序中使用的文件作用域的变量如 int=3

存储时期:

静态存储时期:变量在程序执行期间一直存在

自动存储时期:变量是代码块作用域的

 

 

下面是存储类的说明符

auto:变量有自动存储时期。

register:用在代码块作用域的变量,存储更快。但是不能获得该变量的地址,而且register int x这样的声明不一定有用,因为寄存器数量有限,有可能没有了

static:用在代码块作用域的变量声明时,该变量有静态存储时期。用在文件作用域变量前面时,表示是内部链接

extern:表示声明一个已经在别处定义了的变量。

 

定义和声明

上代码看区别把

int a=1;
main(){
    extern int a;
}

这里变量a声明了2次,第一个是开辟内存空间,是定义变量,也叫声明定义

第二次是使用之前的变量a,所以这次的声明是引用声明。

extern表示该声明不是一个定义,因为它指示编译器参考其他地方

 

今天就先写这么多把 EOF

以上是关于C变量存储的主要内容,如果未能解决你的问题,请参考以下文章

从外部存储中检索 Relay 查询片段的变量

如何优化C ++代码的以下片段 - 卷中的零交叉

[Go] 通过 17 个简短代码片段,切底弄懂 channel 基础

C变量存储

C 语言变量本质 ( 变量概念 | 变量本质 - 内存空间别名 | 变量存储位置 - 代码区 | 变量三要素 )

在C代码中将结构体变量作为参数传递效率忒低