为了账号安全,请及时绑定邮箱和手机立即绑定

有个地方搞不懂,请老师指点!

void replaceMax(int arr[],int value)
{
    int max = arr[0];
    int index = 0;
    int i;
    for(i=1;i<5;i++)
    {
        if(arr[i]>max)
        {
            max = arr[i];           //将数组中较大的数赋值给max
            index = i;  //记录当前索引
        }                
    }  
    arr[index] = value;《《《《这里的index为什么用的是if里面的值》》》》
}

!!!!!5--10的练习题!!!!!

int main()
{
    int x = 10;
    if(x>0)
    {
        int x = 100;
        x /= 2;
        printf("if语句内, x=%d\n", x);       
    }
    printf("main方法内, x=%d\n", x);《《《《这里的x用的是main里面的,而不是if里面的x值》》》》
    fn1();
    return 0;
}

正在回答

2 回答

变量的作用域。

0 回复 有任何疑惑可以回复我~
#1

花式秀下限 提问者

不懂,能详细地解释一下么,为什么5--10里面用的是main函数里面int的x,
2015-07-19 回复 有任何疑惑可以回复我~
#2

花式秀下限 提问者

这两个函数都是在主函数里面定义了index/x,也都在if里面给index/x赋了值,在if外面使用的时候一个用的是if里面的值,另一个用的是if外面的值,
2015-07-19 回复 有任何疑惑可以回复我~
#3

Fiona0126 回复 花式秀下限 提问者

对于main函数厘面的if(x>0){int x;这里的x来说,它的作用域仅限于这个if而已,当这个if结束后,这个x不再被使用。}。、、然而main函数期初定义的x,它的作用域是整个main函数。
2015-07-19 回复 有任何疑惑可以回复我~
#4

花式秀下限 提问者 回复 Fiona0126

那为什么上面那个函数的index在if结束后被保留下来了,并且replaceMax函数里面也初定义了index,它的作用域也是整个replacMax函数
2015-07-19 回复 有任何疑惑可以回复我~
#5

花式秀下限 提问者 回复 Fiona0126

如果上面那个也用初定义的index,那么在if外index=0,arr[0]=value=1,那输出的结果就是1 41 3 12 22
2015-07-19 回复 有任何疑惑可以回复我~
#6

Fiona0126 回复 花式秀下限 提问者

.........= =。作用域和定义的位置有关。。。在上面的if中根本就没有重新申请空间,而是直接调用的函数栈中的index。。你要是写成int index = i;就不一样了。。
2015-07-19 回复 有任何疑惑可以回复我~
#7

花式秀下限 提问者 回复 Fiona0126

懂了,第一个函数里面也是因为用了int x = 100,多谢大神
2015-07-20 回复 有任何疑惑可以回复我~
查看4条回复

举报

0/150
提交
取消
C语言入门
  • 参与学习       926020    人
  • 解答问题       20793    个

C语言入门视频教程,带你进入编程世界的必修课-C语言

进入课程

有个地方搞不懂,请老师指点!

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信