C语言中局部变量和全局变量是否可以重名?为什么?

可以重名

在C语言中, 局部变量指的是定义在函数内的变量, 全局变量指的是定义在函数外的变量

他们在程序中的使用方法是不同的, 当重名时, 局部变量在其所在的作用域内具有更高的优先级, 会覆盖或者说隐藏同名的全局变量

具体来说:

局部变量的生命周期只在函数内部,如果出了函数,局部变量就会销毁

全局变量的生命周期在程序的整个执行的过程中都是可见的,程序执行完成后,则销毁

当在函数中访问一个变量时, 编译器首先会在函数内查找变量,如果找到了,则使用局部变量, 如果没找到,则会在函数外部, 找这个变量, 直到找到该变量, 或者到达了最顶层的全局作用域

如果重名, 会带来一些潜在的问题, 为了避免数据的混淆,通常时不建议局部变量和全局变量重名的, 清晰的变量名,可以反应对应的意义。

#include <stdio.h>

int a = 10;

void test()
{
    int a = 20;
    printf("%d\n", a);
}

int main()
{
    printf("%d\n", a);
    test();
    return 0;
}

相关推荐

  1. C语言变量全局变量能否

    2024-04-15 09:42:02       55 阅读
  2. C语言——局部变量全局变量

    2024-04-15 09:42:02       23 阅读
  3. C++ 局部变量全局变量

    2024-04-15 09:42:02       66 阅读
  4. c语言,一些全局变量局部变量的定义及区别

    2024-04-15 09:42:02       36 阅读
  5. 数据类型局部/全局变量

    2024-04-15 09:42:02       46 阅读
  6. c语言局部变量的作用域是?

    2024-04-15 09:42:02       35 阅读
  7. C语言什么全局变量?如何应⽤?

    2024-04-15 09:42:02       33 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-15 09:42:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-15 09:42:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-15 09:42:02       87 阅读
  4. Python语言-面向对象

    2024-04-15 09:42:02       96 阅读

热门阅读

  1. 5.Spring&SpringBoot八股

    2024-04-15 09:42:02       32 阅读
  2. async-validator --- 中文文档

    2024-04-15 09:42:02       82 阅读
  3. 我的编程与创作历程:512天从C语言到Linux

    2024-04-15 09:42:02       37 阅读
  4. Pytorch:二维卷积及其伴随定义

    2024-04-15 09:42:02       160 阅读
  5. SpringBoot中的常见注解详细介绍,附带代码示例

    2024-04-15 09:42:02       32 阅读
  6. 神经网络模型底层原理与实现10-softmax的实现

    2024-04-15 09:42:02       134 阅读
  7. PyQt5

    PyQt5

    2024-04-15 09:42:02      111 阅读
  8. 如何防御局域网的网络攻击

    2024-04-15 09:42:02       118 阅读
  9. LeetCode 1.两数之和

    2024-04-15 09:42:02       85 阅读
  10. Fortinet年度重磅发布 ,FortiOS 7.6高能登场

    2024-04-15 09:42:02       50 阅读
  11. @CrossOrigin注解解决跨域问题

    2024-04-15 09:42:02       40 阅读