c语言,全局变量问题

#include<stdio.h>intk=1;voidFun();voidmain(){intj;for(j=0;j<2;j++)Fun();printf("k=%d"... #include <stdio.h>
int k = 1;
void Fun();
void main()
{  int j;
  for(j = 0; j < 2; j++)
Fun();
printf("k=%d", k);
}
void Fun()
{  int k = 1; /* 第11行 */
printf("k=%d,", k);
 k++;
}
(17)程序的输出是 (D) 。
A、k=1,k=2,k=3 B、k=1,k=2,k=1
C、k=1,k=1,k=2 D、k=1,k=1,k=1
(18)将第11行改为“static int k=1;”后,程序的输出是 (C) 。
A、k=1,k=1,k=1 B、k=1,k=1,k=2
C、k=1,k=2,k=1 D、k=1,k=2,k=3
(19) 将第11行改为“k=1;”后,程序的输出是 (C) 。
A、k=1,k=2,k=1 B、k=1,k=1,k=1
C、k=1,k=1,k=2 D、k=1,k=2,k=3
(20) 将第11行改为“;”后,程序的输出是 (B) 。
A、k=1,k=1,k=2 B、k=1,k=2,k=3
C、k=1,k=1,k=1 D、k=1,k=2,k=1

郁闷啊,全局变量完全搞不懂,求大师解答,要详细解答,不然我还是看不懂。
展开
 我来答
前星光0kF
2012-12-26 · 超过36用户采纳过TA的回答
知道答主
回答量:155
采纳率:0%
帮助的人:88.1万
展开全部
(17)

void Fun()
{  int k = 1; /* 第11行 */
printf("k=%d,", k);
k++;
}
如果子函数中定义了和全局变量相同的变量时,全局变量再整个函数作用于中不起作用,起作用的是函数中的局部变量,所以,这个Fun()中k被 int k=1 赋值为1, printf时 k 的值是1, 但是接下来程序退出,所以下次再进入时候 k还是从1 开始。 main 中 的 k 是全局的,所以 这个时候 k=1 , 如此全部的k 都等于1.

(18)

将第11行改为“k=1;”后。 所有的 static 定义都会当做全局变量,这个变量是在main以后定义的,所以,main中的k是上面的 int k=1; 定义的。 fun()中的是后面的 static int k=1; ,所以当执行k++ 执行后,k已经变成了2,这个时候再次运行 fun() 时候 int k 不会被重定义的。 所以 这个时候k还是2. 所以 第一个k 是1 第二次调用fun()后k是2,然后main中 k 依然是1.

(19) 不用说了,素有的k都是全局的 int k=1,调用fun的时候被重新赋值;
(20) 第十一行改成 “;” 就是删除这一行,调用fun的时候不重新赋值,只做++ 运算。
Yu10K
2012-12-26 · 超过13用户采纳过TA的回答
知道答主
回答量:59
采纳率:0%
帮助的人:29.5万
展开全部
你所使用的变量是最内层的变量,内层的出现后,外层的会被隐藏,例如:
int i;
{
int i;
scanf("%d",&i);
}

你所输入的是大括号里面的i,什么时候外层的才能出现呢?当内层变量被摧毁的时候!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yj2yj
2012-12-26 · TA获得超过122个赞
知道小有建树答主
回答量:276
采纳率:0%
帮助的人:183万
展开全部
变量的范围只在自己所在的大括号中起作用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-12-27
展开全部
局部变量和全局变量同名有限使用局部变量,
程序运行遇到变量先在局部查找,找不到才会在全局(整个文件)中找的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式