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

     
  • 相关阅读:
    剑指Offer-11.二进制中1的个数(C++/Java)
    剑指Offer-10.矩形覆盖(C++/Java)
    剑指Offer-9.变态跳台阶(C++/Java)
    UVA 1608 Non-boring sequence 不无聊的序列(分治,中途相遇)
    UVA1607 Gates 与非门电路 (二分)
    UVA 1451 Average平均值 (数形结合,斜率优化)
    UVA 1471 Defense Lines 防线 (LIS变形)
    UVA 1606 Amphiphilic Carbon Molecules 两亲性分子 (极角排序或叉积,扫描法)
    UVA 11134 FabledRooks 传说中的车 (问题分解)
    UVA 1152 4 Values Whose Sum is Zero 和为0的4个值 (中途相遇)
  • 原文地址:https://www.cnblogs.com/1314520xh/p/7975431.html
Copyright © 2011-2022 走看看