• c语言全局变量与局部变量(当变量重名时)的使用情况


    在c语言中,变量有全局变量局部变量之分,这一点和很多高级语言类似,如c#,java等。不过与c#,java中的局部变量如在全局变量作用域内则不允许与全局变量名相同,而c语言是允许这样做的。这样的做法极不提倡,但是c语言既然允许这么做,就分析一下其变量名相同时在不同位置调用该变量名时所实际调用的是哪个变量值。

    代码如下:

    #include <stdio.h>
    
    //全局变量
    //作用域:从定义开始到文件结束
    //默认初始值为0
    int c = 1;
    
    int test()
    {
        int c = 2;
        
        //这个位置int c = 1; int c = 2;都起作用,
        //则使用作用域最近的c = 2;
        //2
        printf("%d
    ",c);
    }
    
    
    
    //当在调用变量时有多个同名变量起作用的时候
    //则使用作用域离自己最近的变量
    //133423
    int main()
    {
        //这个位置只有你int c = 1;起作用
        //1
        printf("%d
    ",c);
        
        //局部变量
        //作用域:从定义开始到函数结束
        //没有默认初始值
        int c = 3;
        
        
        //这个位置int c = 1; int c = 3;都起作用,
        //则使用作用域最近的c = 3;
        //3
        printf("%d
    ",c);
        
        {
            //这个位置int c = 1; int c = 3;都起作用,
            //则使用作用域最近的c = 3;
            //3
            printf("%d
    ",c);
            //局部变量
            //作用域:从定义开始到代码块结束
            //没有默认初始值
            int c = 4;
            
            //这个位置int c = 1; int c = 3;int c = 4;都起作用,
            //则使用作用域最近的c = 4;
            //4
            printf("%d
    ",c);
        }
        
        //查看test()函数内部
        //2
        test();
        
        
        //这个位置int c = 1; int c = 3;都起作用,
        //则使用作用域最近的c = 3;
        //3
        printf("%d
    ",c);
        
        return 0;
    }

    结果:

    1
    3
    3
    4
    2
    3

    总结:当在调用变量时有多个同名变量起作用的时候,则使用作用域离自己最近的变量

  • 相关阅读:
    使用Loadrunner监控Windows资源
    Tomcat使用线程池配置高并发连接
    性能测试中遇到的坑
    本地eclipse启动tomcat后无法访问
    Linux常用命令汇总
    Dubbo底层采用Socket进行通信详解
    今天遇到了一个Spring出现的一个未知错误,分享下
    maven pom.xml 详细
    Oracle 数据库中在使用中文模糊查询时输入中文查询不到结果的解决方法
    mybatis属性详解
  • 原文地址:https://www.cnblogs.com/yoran-yang/p/4282793.html
Copyright © 2020-2023  润新知