存储类

存储类

 接下来看一下代码:

int x=30;
printf("x1=%d",x);
{
int x=33;
printf("x2=%d",x);
}
while(x++<33){
int x=100;
printf("x3=%d",x);
}
printf("x4=%d",x);

 首先,在代码中创建了一个变量x并赋值为30,第一个printf() 输出为30,接着定义了一个新的值为33的x变量,通过printf()输出,在while()循环中开始进行新建的变量x为100 并printf() 最后再循环结束后printf()一下

自动变量的初始化

除非显示初始化自动变量,否则它不会自动初始化

int main(void){
int i;
int age=10;
}  

变量age的初始化值为10,而变量i的初始值则是先前占用分配给它的空间任意值,不要指望这个值是0.若想要给变量初始化就要先定义一个值

int main(void){
int i=1;
int age=10;}

  寄存器变量

变量存储再计算机内存中,称为寄存器变量。寄存器变量可以被存储再CPU寄存器中,或者更一般地,存储在速度块的可用内存,从而可以比普通变量更快第被访问和操作。通常使用存储类说明符register可以声音寄存器变量

例如:

{register int quick;
}  

具有外部链接的静态变量

具有外部链接的静态变量有文件作用域、外部链接和静态存储时期。这一类型的变量被称为外部变量,把变量的定义声明放在所有函数之外,即创建了一个外部变量。为了是程序更加清晰,可以再使用外部变量的函数中通过使用extern关键字来再次声明它。

例如:

int coss;
int main(void){
extern int coss;//声明外部变量
}
int student(interesting num){
extern int coss;
}
int teacher(){
//未声明变量coss但是知道
}
int school(){
int coss//声明变量coss,并转化为自动变量
}
int csl(){
auto int coss;//将局部变量coss,默认为自动变量
}

  C语言中有5个作为存储类说明符的关键字,它们分别是:auto,register,static,extern,typedef。除了最后一个和内存存储无关,由于语法原因呗归入此类。不可以在一个声明中使用一个以上的存储类说明符,这意味着不能将其它任意存储类说明符作为typedef的一部分

说明符:auto表明一个变量具有自动存储时期,

说明符:register只能用于具有代码块作用域的变量

说明符:static用于具有代码块作用域的变量的声明时

说明符:extern表明已经再别处定义了的变量

原文地址:https://www.cnblogs.com/X404/p/12189532.html