求知 文章 文库 Lib 视频 Code iProcess 课程 认证 咨询 工具 火云堂 讲座吧   建模者  
会员   
要资料
 
追随技术信仰

随时听讲座
每天看新闻
 


C语言教程
C语言历史
C语言特点
C语言VS开发环境安装
C语言第一个程序
C语言程序执行流程
C语言printf()和scanf()函数
C语言变量
C语言数据类型
C语言关键字
C语言运算符
C语言注释
C语言转义序列
C语言常量
C语言控制语句
C语言if-else语句
C语言switch语句
C语言循环
C语言do-while循环
C语言while循环
C语言for循环
C语言break语句
C语言continue语句
C语言goto语句
C语言类型转换
C语言函数
C语言函数
C语言通过值和引用函数
C语言递归
C语言存储分类
C语言数组
C语言数组
C语言二维数组
C语言将数组传递给函数
C语言指针
C语言指针
C语言指针的指针
C语言指针算术运算
C语言字符串
C语言字符串
C语言gets()和puts()函数
C语言字符串函数
C语言strlen()函数
C语言strcpy()函数
C语言strcat()函数
C语言strcmp()函数
C语言strrev()函数
C语言strlwr()函数
C语言strupr()函数
 
 

C语言存储分类
74 次浏览
1次  
 捐助

存储分类用于定义变量的范围和使用寿命。C语言编程中有四个存储分类。它们分别如下 -

  • auto
  • extern
  • static
  • register
存储类 存储地点 默认值 范围 生命周期
auto RAM 垃圾值
局部

函数中
extern RAM 全局 直到主程序结束,可以在程序的任何地方声明
static RAM 局部 直到主程序结束,保留多个函数之间的值调用
register 寄存器 垃圾值 局部 函数中

1. auto变量

auto关键字自动应用于所有局部变量。它是默认存储类,这就是为什么它被称为自动变量。

为了方便演示,首先创建一个工程:storage-classes,然后在此工程下创建一个源文件:auto-example.c,其代码如下 -

#include <stdio.h>
void main() {
int a = 10;
auto int b = 10;//same like above
printf("%d %d", a, b);
}

 

执行上面示例代码,得到以下结果 -

10 10

2.register变量

寄存器(register)变量将寄存器的内存分配给RAM。 其大小与寄存器大小相同。它比其他变量的访问速度更快。

建议仅使用寄存器变量进行快速访问,如计数器。

注意:我们无法获取寄存器变量的地址。

声明示例:

register int counter = 0;

3.static变量

静态变量只初始化一次,直到程序结束。它在多个函数调用之间保留其值。静态变量的默认值为0,由编译器提供。

创建一个源文件:static-example.c,其代码如下 -

#include <stdio.h>
void func() {
static int i = 0;//static variable
int j = 0;//local variable
i++;
j++;
printf("i= %d and j= %d\n", i, j);
}
void main() {
func();
func();
func();
}

 

 

执行上面示例代码,得到以下结果 -

i= 1 and j= 1
i= 2 and j= 1
i= 3 and j= 1

4.extern变量

所有程序都可以看到(或访问)extern变量。如果两个或多个文件共享相同的变量或函数,则可使用extern变量。

下面是一个声明示例:

extern int counter = 0;

 


您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码: 验证码,看不清楚?请点击刷新验证码 必填



74 次浏览
1次
 捐助
 

每天2个文档/视频
扫描微信二维码订阅
订阅技术月刊
获得每月300个技术资源
 
 

关于我们 | 联系我们 | 京ICP备10020922号 京公海网安备110108001071号