水而寒 2019-07-14 19:22 采纳率: 72.7%
浏览 390
已采纳

初学C语言,为什么这个x值是全局变量的1,而不是main函数里的5?

图片说明图片说明图片说明

c函数里面没有定义x,但是c函数不是在main函数里吗?局部变量x=5的作用域是main函数,不是应该包含c函数吗?
初学C,问题可能很幼稚,希望各位帮忙解答一下,谢谢!

  • 写回答

3条回答 默认 最新

  • gshuli 2019-07-15 10:29
    关注
    在main函数或其他函数里定义了局部变量,同时同名的全局变量同时也存在,当调用一个使用了该变量的函数(该变量在此函数中无定义)时,函数会使用全局变量。而不是main或其他函数中定义的同名变量,你遇到的情况就是在void c()函数中,x没有定义。
        虽然在main函数里有对c()函数的调用,但是c()函数与main函数还是属于两个作用域,对于函数来说首先是自己定义的局部变量,其次是大家共有的全局变量.
        如果你c函数改为 void c(int x),在main中调用 c(x);则会传入main中的局部x.**
    
    
        验证一下,把全局变量x去掉,应该不会通过编译,会出现未定义标识符。
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算