0
点赞
收藏
分享

微信扫一扫

C语言深度剖析 - 变量的分类和作用域 #干货盘点#

4.变量的分类

局部变量:

包含在代码块中的变量叫做局部变量。局部变量具有临时性。进入代码块,自动形成局部变量,退出代码块自动释放。

局部变量不初始化默认为随机值

代码块

代码块:用{}括起来的区域,就叫做代码块
    main函数也是函数,也有代码块{}

全局变量

在所有函数外定义的变量,叫做全局变量。全局变量具有全局性。

全局变量不初始化默认为0 /NULL

例子

int g_val = 10; //g_val是全局变量
//main函数也是函数,也有代码块{}
int main() 
{
    int x = 10; //局部变量
    {
        int y = 20; //局部变量
    }
  //  printf("%d\n",y); //err  y只在上面的代码块内有效,出了代码块后自动释放  程序会报错:未定义标识符y
    return 0;
}

变量的作用域

作用域概念:指的是该变量的可以被正常访问的代码区域

局部变量:只在本代码块内有效

全局变量:整个程序运行期间,都有效    

例子

int g_x = 100;  //全局变量
void show()
{
    printf("show: 全局: %d\n", g_x); //在任何代码块中都可以被访问
}
int main()
{
    show();
    printf("main: 全局: %d\n", g_x); //全局变量在任何代码块中都可以被访问,甚至被修改
    return 0;
}
当全局变量和局部变量同名时:局部优先
int g_x = 100;  //全局变量
int main()
{
    int g_x = 10; //局部变量,与全局同名
    printf("g_x:%d\n", g_x); //10  输出的是局部,也就是局部和全部同名的时候,优先局部。所以,强烈不建议这样干
    return 0;
}

变量的生命周期

生命周期概念:指的是该变量从定义到被释放的时间范围,所谓的释放,指的是曾经开辟的空间”被释放“

局部变量: 进入代码块,形成局部变量[开辟空间]。  退出代码块,"释放"局部变量

全局变量: 定义完成之后,程序运行的整个生命周期内,该变量一直都有效
举报

相关推荐

0 条评论