C语言教程:存储分类

2018-10-0707:59:13编程语言入门到精通Comments1,756 views字数 924阅读模式

存储分类用于定义变量的范围和使用寿命。C语言编程中有四个存储分类。它们分别如下 -文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6426.html

  • auto
  • extern
  • static
  • register
存储类存储地点默认值范围生命周期
autoRAM垃圾值局部函数中
externRAM全局直到主程序结束,可以在程序的任何地方声明
staticRAM局部直到主程序结束,保留多个函数之间的值调用
register寄存器垃圾值局部函数中

1. auto变量

auto关键字自动应用于所有局部变量。它是默认存储类,这就是为什么它被称为自动变量。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6426.html

为了方便演示,首先创建一个工程:storage-classes,然后在此工程下创建一个源文件:auto-example.c,其代码如下 -文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6426.html

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

执行上面示例代码,得到以下结果 -文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6426.html

10 10
Shell

2.register变量

寄存器(register)变量将寄存器的内存分配给RAM。 其大小与寄存器大小相同。它比其他变量的访问速度更快。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6426.html

建议仅使用寄存器变量进行快速访问,如计数器。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6426.html

注意:我们无法获取寄存器变量的地址。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6426.html

声明示例:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6426.html

register int counter = 0;
C

3.static变量

静态变量只初始化一次,直到程序结束。它在多个函数调用之间保留其值。
静态变量的默认值为0,由编译器提供。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6426.html

创建一个源文件:static-example.c,其代码如下 -文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6426.html

#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();
}
C

执行上面示例代码,得到以下结果 -文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6426.html

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

4.extern变量

所有程序都可以看到(或访问)extern变量。如果两个或多个文件共享相同的变量或函数,则可使用extern变量。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6426.html

下面是一个声明示例:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6426.html

extern int counter = 0;
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6426.html
  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/ymba/6426.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定