zoukankan      html  css  js  c++  java
  • 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

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

  • 相关阅读:
    oracle 如何查看oracle数据库版本
    oracle 拼接字符串的两种方式
    ibatis 批量更新(二)
    ibatis中#和$如何当作字符使用?
    SVM核技巧的经典解释
    Koch 分形,海岸线,雪花
    Java程序猿笔试面试之String
    一步一步在Windows下搭建React Native Android开发环境
    IOS是否在项目中存在,所使用的反射那点事
    图的深度搜索和广度搜索
  • 原文地址:https://www.cnblogs.com/yoran-yang/p/4282793.html
Copyright © 2011-2022 走看看