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

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

  • 相关阅读:
    Python正则表达式(3)--字符串匹配开头结尾
    Python正则表达式(2)---字符串匹配多个字符
    Python正则表达式(1) --匹配单个字符
    Navicate Premium 永久破解
    升级pip指令
    爬虫(自学)之User Agent 第三方库my_fake_useragent 和 fake_useragent
    django drf 反序列化上传图片
    git的使用
    python 爬虫 基本库使用urllib之urlopen(一)
    吉他入门第三讲~~~~~和弦
  • 原文地址:https://www.cnblogs.com/yoran-yang/p/4282793.html
Copyright © 2011-2022 走看看