C语言基础学习笔记(6):变量作用域、形参与实参

C语言基础学习笔记:变量作用域、形参与实参

图:联盟号飞船(Soyuz)

Guderian出品

  1. C语言中,作用域较小的局部变量隐藏作用于较大的局部变量。如:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #include <stdio.h>
    int main()
    {
    int a = 1, b = 2;
    {
    int a = 3, b = 4;
    printf("a = %d, b = %d\n", a, b);
    }
    printf("a = %d, b = %d", a, b);
    return 0;
    }

    输出结果为:

    1
    2
    a = 3, b = 4
    a = 1, b = 2
  2. C语言中,局部变量隐藏全局变量。形参与全局变量同名不会相互干扰。

  3. 实参(argument):在调用函数时传递给函数的参数,在调用时有确定的值

    形参(parameter):在定义函数名和函数体时使用的参数,目的是接收调用该函数时传入的参数。

  4. 总之,只要同名的变量出现在不同的作用域内二者互不干扰,编译器有能力区分不同作用域中的同名变量。

  5. 编译器如何区分不同作用域的同名变量呢?编译器没有变量名这个概念,只知道内存地址,通过将同名变量映射到不同的内存地址来实现作用域的划分,如全局变量位于RAM中的静态存储区局部变量位于RAM中的动态存储区

    (1)只读存储区

    • 存放机器代码和常量等只读数据

    (2)静态存储区

    • 存放全局变量和静态变量等
    • 静态——发生在程序编译或链接时

    (3)动态存储区

    • 包括堆和栈。其中栈用于保存函数调用时的返回地址、形参、局部变量等
    • 动态——发生在程序载入和运行时

【更多C语言系列】

本文标题:C语言基础学习笔记(6):变量作用域、形参与实参

文章作者:G-SS-Hacker

发布时间:2020年02月18日 - 11:49:13

最后更新:2020年02月18日 - 14:06:52

原始链接:https://G-SS-Hacker.github.io/C语言基础学习笔记(6):变量作用域、形参与实参/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。