C语言存储分类是如何进行的?

    作者:初生不惑更新于: 2020-02-18 15:46:57

    大神带你学编程,欢迎选课

    C语言初学者比较喜欢的Turbo C 2.0提供了400多个运行时函数,每个函数都完成特定的功能,用户可随意调用。这些函数总体分成输入输出函数、数学函数、字符串和内存函数、与BiOS和DOS有关的函数、 字符屏幕和图形功能函数、过程控制函数、目录函数等。

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

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

    1. auto变量

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

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

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

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

    shell code-toolbar">10 10
    
    Shell

    2.register变量

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

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

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

    声明示例:

    register int counter = 0;
    
    C

    3.static变量

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

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

    #include   
    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

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

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

    4.extern变量

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

    下面是一个声明示例:

    extern int counter = 0;
    C语言函数是一种函数,用来编译C语言,所在库函数为ctype.h,分为分类函数,数学函数,目录函数,进程函数,诊断函数,操作函数等。

课课家教育

未登录