章节
问答
课签
笔记
评论
占位
占位

局部与全局

C语言中的变量,按作用域范围可分为两种,即局部变量和全局变量。

局部变量也称为内部变量。局部变量是在函数内作定义说明的。其作用域仅限于函数内, 离开该函数后再使用这种变量是非法的。在复合语句中也可定义变量,其作用域只在复合语句范围内。

全局变量也称为外部变量,它是在函数外部定义的变量。它不属于哪一个函数,它属于一个源程序文件。其作用域是整个源程序

任务

下面这段代码分别定义了全局变量int x=77和局部变量int x=10;期望的运行结果是:

在代码编辑器中:

第12行中添加一个变量类型,使其结果和期望运行结果一样。

?不会了怎么办

1、在复合语句中也可以定义局部变量,其作用域只在复合语句内部

2、参考代码

||
1
#include <stdio
    .h>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
提交
重置代码
||

请验证,完成请求

由于请求次数过多,请先验证,完成再次请求

加群二维码

打开微信扫码自动绑定

您还未绑定服务号

绑定后可得到

  • · 粉丝专属优惠福利
  • · 大咖直播交流干货
  • · 课程更新,问题答复提醒
  • · 账号支付安全提醒

收藏课程后,能更快找到我哦~

使用 Ctrl+D 可将课程添加到书签

邀请您关注公众号
关注后,及时获悉本课程动态

举报

0/150
提交
取消
全部 精华 我要发布

最赞回答 / upc1904011226
本节应该定义三个x,即要用三次int x。第一个int x=77是全局变量,作用范围是整个程序。第二个int x=10是局部变量,作用于整个函数main()。第三个int x=100也是局部变量,但仅作用于if复合语句范围内。三个x作用范围依次减小,范围大的可以作用于范围小的,范围小的不能作用于范围大的,且优先使用范围小的。你在if语句中没有定义第三个x,而是直接使用x,且第二个x定义在if语句之后,所以你的if语句中使用的是第一个x。你之后定义了第二个x=10,此时你的第一个x=50,而fn1()在ma...

最新回答 / weixin_慕无忌4395984
x/2;这条语句不成立下载视频          

最赞回答 / 慕娘3551181
int x=77;  标为x(1),它是整个程序的变量,全局变量int x=10;  标为x(2),这是函数main() 中的全局变量,也是整个程序的局部变量int x=100; 标为x(3),这是if语句中的全局变量,这也是整个程序的局部变量,但级别比x(2) 还低,被引用的范围更小。若写称 x=100;这就是给x(2)进行赋值,也就是说x(2)的值被改成100了,main()函数中使用x的位置,其值都是100在main()函数中,运行到fn1();时,程序暂时跳出main()函数,去执行自定义函数fn...

最赞回答 / 执笔画江山彡
if语句里那个x=100;如果不加int,x的值只能用main()函数里的局部变量,所以除了fn1()函数中x的值,其他的x值当然都是5

最新回答 / 采彡丶虫工
你写的是不是第12行没有加int啊。

最新回答 / 影梦灵
int x=100;   我找到了

最赞回答 / 杼蛘
在同一个函数内,变量是可以重新赋值的,在本例中如果不改动,在if内就改变了原先x的值,所以第二句话肯定是x=50;改动的话就相当于在if 语句块内声明了一个新的变量x,和main函数内声明的变量x是两个不同的变量。

最赞回答 / 梦中蝶花
局部变量的作用域在你所定义他的大括号内{ };for(){for(){}}局部变量在执行完所在大括号{}的代码后会立即销毁。

最赞回答 / weixin_精慕门8554329
不加int就相当于把100的值赋给了x再除以二,覆盖了原来的10,加了int就是在if里面重新定义的一个局部变量x,

最新回答 / SheepShake
y = 2+2 = 4 有什么问题?

最新回答 / 慕数据1128963
在递归函数当中也是要调用的,还有参数,而这里void没有返回值,所以就直接调用了fn1();

已采纳回答 / 行行复行行
printf("fn1(): x=%d\n", x)fn1(): x=  是输出显示出的字符串。%d是输出结果为整形输出的意思,数值为后面变量x的数。\n意思是输出上面的结果后换行。因为全局变量x=77,所以最后的输出效果是
fn1(): x=77

最新回答 / 学无涯233
没必要分析它们的关系。全局变量 和 局部变量 是关于变量的作用范围的概念;形参 和 实参 是关于函数中参数的调用的概念。两组概念分别描述的是不同的内容,单独把它们搞懂就行了。

最新回答 / Warm_Sweet
if (x > 0) 所在的函数中if 的前面如果有int x,指的就是局部变量,如果没有就说明是全局变量。这里是局部变量。
全部 我要发布
最热 最新
只看我的

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

账号登录 验证码登录

遇到问题
忘记密码

代码语言