zoukankan      html  css  js  c++  java
  • 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

     
  • 相关阅读:
    IIS禁止xml文件访问
    微信三方授权域名问题
    微信公众号接收推送
    微信菜单保存
    微信三方授权 二维码获取问题 以及网页显示问题
    控制input框的内容输入为数字
    select 相关 获取当前项以及option js选定
    子窗口调用父窗口方法
    免费在线的web性能测试网站
    【原创】Kakfa utils源代码分析(三)
  • 原文地址:https://www.cnblogs.com/1314520xh/p/7975431.html
Copyright © 2011-2022 走看看