为什么出现超大的值,并没有越界啊

来源:2-11 编程练习

broodopq

2018-10-12 16:20:39

#include<iostream>

using namespace std;

//声明求数组最大值的函数


int Max(int *num,int len)

{

    int i;

    int a=num[0];

    for(i=0;i<len;i++,num++)

    {

        if(*num>a)

        {

            a=num[i];   //故意没有写a=*num 可是为什么这样的值就超大???

            

        }

    }

    return a;

}


int main()

{

//定义一维数组

int num[5]={4,5,2,6,9};

    

//调用函数,输出返回值

cout<<"Max="<<Max(num,5)<<endl;


return 0;

}


写回答

1回答

好帮手慕查理

2018-10-12

您好,因为数组作为传参时是指针形式的传参。之后在循环时num++,即依次指向数组的元素,那么对应最大值应该是*num,即使用a=*num;,当循环时候num++,指针的地址改变,此时使用a=num[i];是找不到对应的数组值的,因此结果错误。如果使用a=num[i]; 则不需要num++,在判断时也要使用num[i]的方式进行判断即可。祝学习愉快!

0

0 学习 · 593 问题

查看课程