存储类

作用域 

作用域可分为代码块作用域,函数原型作用域以及文件作用域

  • 代码块作用域:譬如函数的形参,函数体中定义的变量。作用范围从变量被定义的地方开始,到包含该定义的花括号结束,如:

for(int i = 0; i < 10; i++){  //变量i的作用范围是for循环体内
  ...
}

  • 函数原型作用域:适用于函数原型中使用的变量名。作用范围从变量定义处开始,到原型声明末尾,如:
void use_a_VLA(int n, int m, int ar[n][m]);  //如果在方括号中使用变量名,则该变量名必须是在该原型中定义了的

  • 文件作用域:一个在所有函数之外定义的变量具有文件作用域,范围从它定义的地方开始,到包含该定义的文件结尾处

 

链接类型

链接可分为外部链接,内部链接和空链接

  • 外部链接:可以在一个多文件程序的任何地方使用
  • 内部链接:可以在一个文件的任何地方使用。具有文件作用域的变量可能有内部或外部链接,用static声明的文件作用域的变量为内部链接,否则为外部链接
  • 空链接:由其定义所在的代码块或函数原型所私有的,具有代码块作用域或者函数原型作用域的变量有空链接

 

存储时期

存储时期可分为静态存储时期和自动存储时期

  • 静态存储时期:在程序执行期间将一直存在。具有文件作用域变量都是静态存储时期
  • 自动存储时期:具有代码块作用域的变量一般情况下具有自动存储时期。在程序进入定义这些变量的代码块时,为这些变量分配内存;退出这个代码块时,分配的内存被释放

 

它们的组合——存储类

根据作用域,链接以及存储时期的不同组合,有以下5种存储类

存储类时期作用域链接声明方式
自动变量自动代码块代码块内
寄存器变量自动代码块代码块内,使用关键字register
外部变量静态文件外部所有函数之外
具有内部链接的静态变量静态文件内部所有函数之外,使用关键字static
空链接的静态变量静态代码块代码块内,使用关键字static

综上所述:一般情况下,具有文件作用域(定义在所有函数之外,包括main函数)的变量具有外部链接,并且是静态的,称之为外部变量。但若对该外部变量使用关键字static,则其只具有内部链接,即只在定义该变量的文件内可见,但其仍是静态的。另一方面,一般情况下具有代码块作用域(即函数内定义)的变量是空链接,且为自动的。若对该变量使用关键字static,则存储时期由自动转为静态,但仍为空连接。因此,static对于文件作用域变量和代码块作用域变量有不同的意义:对文件作用域变量,加static将其限制为单文件私有,即改变了链接属性;对代码块作用域,static将其变为静态存储,改变了存储时期

 

其他

1.自动变量不会被默认初始化

2.寄存器变量和自动变量的唯一不同之处在于:它可能被放在CPU寄存器中,被更快地访问和操作。将变量声明为register只是一个请求,而非一条直接的命令。编译器必须在请求与可用寄存器的数量之间进行权衡。当不能分配寄存器时,变量退化为自动变量。另外,不能对寄存器变量使用地址运算符,即使是退化成为自动变量也不行

3.对函数参数不能使用static

4.如果外部变量是在别的文件中定义的,则必须使用extern来进行引用声明。与自动变量不同的是,外部变量会被默认初始化为0。一个外部变量只能进行一次初始化,并且必须是在变量定义时进行。注意下面是错的:

extern char permis = 'Y';  //错误,extern表示这是一个外部变量的引用声明,而非定义

5.内部链接的静态变量同样用extern来进行声明

6.多文件:复杂的C程序往往使用多个独立的代码文件。有些时候,这些文件可能需要共享一个外部变量。可以通过在一个文件中定义外部变量,在其他文件中利用extern进行引用声明来实现对这个变量的共享。也就是说,除了定义之外,其他所有引用声明都必须使用关键字extern,并且只有在定义时才能对该外部变量进行初始化

7.不能将auto,register,static,extern作为typedef的一部分

8.函数也具有存储类,默认情况下函数是外部的。若将函数定义为static,则表示该函数只可以在定义它的文件中使用,这保证了为一个特定模块创建私有的函数,从而避免名字冲突。可使用extern来声明定义在其它文件中的函数,这也不是必须的,因为若函数不被声明为static,则默认为extern

 

存储芯片是一种常见的存储设备,能够储存数据和信息。通过存储芯片,我们可以将书籍PDF文件存储在其中。 存储芯片的特点之一是容量较小。虽然存储芯片的存储容量不如其他设备(如硬盘或云存储)那么大,但对于存储一些书籍PDF文件来说已经足够了。这在某种程度上可以帮助我们理清书籍分,将不同种的书籍按照自己的需要存储在不同的存储芯片中,方便查找和管理。 一个存储芯片通常可以储存数百到数千个PDF文件,这取决于文件的大小。可以通过在计算机上或者其他设备上连接存储芯片来访问这些文件。大多数存储芯片具有插入式USB接口,可以方便地连接到计算机的USB端口上。 由于存储芯片是固态存储设备,与传统的机械硬盘相比,它们的读取速度更快、抗震抗摔性能更好。这意味着我们可以更快地访问和查看存储在芯片中的书籍PDF文件。 不仅如此,存储芯片还具有较好的可靠性和耐用性,因为它们没有机械运动部件,不易受到撞击或热量的影响。即使我们不小心将存储芯片掉在地上或暴露在极端温度下,也不会对其中的数据造成损害。 总的来说,通过存储芯片存储书籍PDF文件是一种简单、方便、安全且可靠的方法。我们可以随时随地访问所需的书籍,而无需承担其他存储设备可能存在的复杂性和不便之处。这使得存储芯片成为了我们日常生活和学习中的有用工具。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值