C语言学习随笔-11 作用域

 作用域:作用域是程序中定义的变量所存放的区域,超过该区域就不能被访问
 C语言中有三个地方可以声明变量:
 -  在函数或块内部的局部变量。
 -  在所有函数外部的全局变量。
 -  在形式参数的函数参数定义中。

1、局部变量

int main局部变量() 
{
    /*
        1、局部变量
        - 在某个函数块的内部声明的变量为局部变量。
        - 它们只能被该函数或该代码块内部的语句使用。
        - 局部变量在函数外部是不可知的
    */

    //局部变量声明
    int a, b;
    int c;

    //实际初始化
    a = 10;
    b = 20;
    c = a + b;

    printf("value of a = %d,b = %d and c = %d\n",a,b,c);

    return 0;
}

2、全局变量
      - 全局变量通常定义在函数外部,通常是在程序的顶部。
      - 全局变量在整个程序生命周期内都是有效的,在任意的函数内部能访问全局变量。
      - 全局变量可以被任何函数访问

int g;
int d = 10;
int main全局变量() 
{
    //局部变量声明
    int a, b;

    //实际初始化
    a = 10;
    b = 20;
    //g = a + b;

    //在程序中,局部变量和全局变量的名称可以相同,但在函数内,如果两个名字相同,会使用局部变量的值,全局变量的值不会使用
    int d = 20;

    printf("d = %d\n",d);

    //printf("a = %d,b = %d,g = %d",a,b,g);

    return 0;
}

3、形式参数

     函数的参数,形式参数,被当作该函数的局部变量,如果与全局变量同名,它们会优先使用

//全局变量声明
int a = 50;

//添加两个整数的函数
int sum(int a, int b) 
{
    printf("value of a in sum() = %d\n",a);
    printf("value of b in sum() = %d\n",b);

    return a + b;
}

int main() 
{
  //局部变量声明
    int a = 10;
    int b = 20;
    int c = 0;
    //int sum(int,int);

    printf("value of a in main() = %d\n",a);
    c = sum(a, b);
    printf("value of c in main() = %d\n",c);

    return 0;
}

4、全局变量与局部变量在内存中的区别

      - 全局变量保存在全局存储区中,占用静态的存储单元;
      - 局部变量保存在栈中,只有在所在函数被调用时才动态的为变量分配存储单元

      初始化局部变量和全局变量
      当局部变量被定义时,系统不会对其初始化,必须自行对其初始化。定义全局变量时,系统会自动对其初始化

 int = 0;
 cahr = '\0';
 float = 0;
 double = 0;
 pointer = NULL;

 

posted @ 2024-01-16 16:34  啊波波老表  阅读(42)  评论(0)    收藏  举报