• c语言中的变量


    一、变量种类:

    外部变量
    局部变量
    全局变量
    自动变量
    寄存器变量
    静态变量

    1)外部变量可以在全局范围内访问,因此函数间可以通过外部变量交换数据,而不必使用参数表;
    2)外部变量在程序执行期间一直存在;
    3)外部变量必须定义在所有函数之外,且只能定义一次,定义后编译程序将为它分配存储单元;
    4)在每个需要访问外部变量的函数中,必须声明相应的外部变量,说明其类型。声明是可以用extern语句显示声明,也可以通过上下文隐式声明

    2. 自动变量(auto int a=8;)

    什么是自动变量:定义在函数体内部的变量,也叫私有变量或者局部变量
    作用域:仅限于定义它的函数体内部,函数中的每个局部变量只在函数被调用时存在,在函数执行完毕退出时消失。

    3. 静态变量

    定义:以static存储类声明的变量。
    static的两种声明:
    1)用static声明限定外部变量函数,可以将其后声明的对象的作用域限定为被编译源文件的剩余部分。通过static限定外部对象,可以达到隐藏外部对象的目的。
    2)用static声明自动变量,声明后的对象的存储方式变为静态存储方式,它与自动变量的不同是,不管其所在的函数是否被调用,它一直存在,而不像自动变量那样,随着所在函数的被调用和退出而存在和消失

    4. 寄存器变量

    register int x;
    register char c;

    以上就声明了两个寄存器变量,register告诉编译器,它所声明的变量使用频率较高。其思想是将register声明的变量放到机器的寄存器中,这样可以使程序更小、执行速度更快,但编译器可以忽略此选项。
    注意:
    1)register声明只适用于自动变量函数的形式参数
    2)过量的register声明并没有什么坏处,因为编译器可以自动忽略过量或者不支持的寄存器变量声明;
    3)无论寄存器变量最终是否放到了寄存器中,它的地址都是不可以访问的。

    5. 全局变量和局部变量

    在某些地方我们会看到全局变量局部变量的定义,其实它们对应的就是外部变量和自动变量。
    全局变量与外部变量的区别是全局变量是作用于程序中的所有地方,它是不加static的外部变量。
    局部变量则与自动变量的定义完全一样

    #include <stdio.h>
    
    int i;             //外部变量
    static int j;      //静态变量
    
    int main()
    {
        int i;         //自动变量,该变量会屏蔽外部变量i
        static int k;  //静态变量
        register int x;//寄存器变量
        return 0;
    }
    

    摘自:http://blog.csdn.net/qq_16923717/article/details/77483548

     
  • 相关阅读:
    SecureCRT使用提示
    毕业论文写作时,那些页眉、页脚中的内容中的横线、回车符难删除问题解决
    ostu进行遥感图像的分割
    有关奇葩的mex编程时的matlab出现栈内存错误的问题
    free 一个指针时【 retval = HeapFree(_crtheap, 0, pBlock);】报错的原因
    matlab坐标轴设置
    Use PRODUCT_USER_PROFILE To Limit User
    mysql只导出表结构或数据
    编程学习要讲究效率和经验
    Unity3D的SerializeField 序列化域名
  • 原文地址:https://www.cnblogs.com/1314520xh/p/7975431.html
Copyright © 2020-2023  润新知