为什么出现超大的值,并没有越界啊
来源: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回答
您好,因为数组作为传参时是指针形式的传参。之后在循环时num++,即依次指向数组的元素,那么对应最大值应该是*num,即使用a=*num;,当循环时候num++,指针的地址改变,此时使用a=num[i];是找不到对应的数组值的,因此结果错误。如果使用a=num[i]; 则不需要num++,在判断时也要使用num[i]的方式进行判断即可。祝学习愉快!
相似问题