美文网首页
关键字与变量、函数之间的相互作用

关键字与变量、函数之间的相互作用

作者: silasjs | 来源:发表于2019-01-29 14:54 被阅读1次

    目录

    [toc]

    局部变量

    1. 概念

    局部变量就是定义在函数,代码块和函数形参列表中的变量,我们就称之为局部变量

    2. 作用范围

    从定义的哪一行开始一直到遇到大括号结束或者遇到return为止

    3. 特点:

    • 相同作用范围内不能出现同名的局部变量
    • 不同作用域范围内出现同名的局部变量,内部的局部变量会覆盖外部的局部变量

    4. 注意:

    • 局部变量没有固定的初始化值,如果没有对局部变量进行初始化,那么局部变量中是一些随机的值,所以在开发中千万不要使用未初始化的局部变量

    5. 存储位置

    局部变量存储在栈中,当作用域结束系统会自动释放栈中的局部变量

    全局变量

    1. 概念

    写在函数,代码块,形参列表外的变量,我们就称之为全局变量

    2. 作用范围

    从一定的那一行开始一直直到文件末尾(暂时这样认为)

    3. 特点

    • 全局变量和局部变量可以同名
    • 如果存在和全局变量同名的局部变量,那么局部变量会覆盖全局变量

    4. 注意:

    全局变量如果没有进行初始化,那么系统默认会将全局变量初始化为0

    5. 存储位置

    全局变量存储在静态区中,它会随着程序的启动而创建,随着程序的结束而结束

    外部全局变量和内部全局变量

    全局变量分为两种:

    • 外部全局变量:
      • 概念:可以被其他文件访问的全局变量,默认情况下所有的全局变量都是外部全局变量
      • 特点:
        • 可以定义同名的外部全局变量
        • 多个同名的外部全局变量指向同一块存储空间

    为了提高数据的安全性,不让别人在其他文件中修改我们的全局变量,C语言提供了另外一个用于修改全局变量的关键字:static

    只要用static修饰的全局变量就是内部全局变量,只能在当前文件中使用,这样就可以提高我们全局变量的安全性

    • 内部全局变量:
      • 概念:只能被当前文件访问的全局变量。只要给全局变量加上static关键字就是内部全局变量
      • 特点:
        • 也可以定义多个同名的内部全局变量
        • 多个同名的内部全局变量如果不在同一个文件中,那么指向不同的存储空间

    • extern:用于声明一个外部全局变量,声明不会开辟存储空间,声明只需要在使用变量之前就行了。
    • static:用于定义一个内部全局变量,定义会开辟存储空间

    static对局部变量的作用

    当使用static来修饰局部变量,那么会延长局部变量的生命周期, 并且会更改局部变量存储的位置,将局部变量从栈转移到静态区中。

    只要使用static修饰局部变量后,当执行到定义局部变量的代码就会分配存储空间,但是只有程序结束才会释放该存储空间。

    static和extern对函数的作用

    static对函数的作用

    • 函数也分为内部函数和外部函数,默认情况下所有的函数都是外部函数

      • 外部函数:可以被其他文件访问的函数
      • 内部函数:只能在当前文件中访问的函数
    • 只要在函数的返回值前面加上static就可以让函数变为内部函数,其他文件就不能访问了

      • 如果static写在函数的实现中,代表定义一个内部函数
      • 如果static写在函数的声明中,代表声明一个内部函数。(在.h中声明一个内部函数没有意义)

    extern对函数的作用

    • 只要在函数的返回值前面加上extern就可以让函数变为一个外部函数,由于默认就是外部函数,所以在开发中一般情况下extern没人写
      • 如果extern写在函数的实现中,代表定义一个外部函数
      • 如果extern写在函数的声明中,代表声明一个外部函数

    相关文章

      网友评论

          本文标题:关键字与变量、函数之间的相互作用

          本文链接:https://www.haomeiwen.com/subject/kvtzjqtx.html