请问老师这个错误是什么意思

来源:2-14 编程练习

Mr__ChAi

2018-04-15 14:30:48

http://img.mukewang.com/climg/5ad2f18500014df413740744.jpg

代码如下:

#include<iostream>

using namespace std;

int MAX(int (*p)[4],int len)

{

int max = 0;

for(int j=0;j<len;j++,*p++)

for (int i = 0; i < 4; i++)

{

if (*(*p+i) > *(*p + i+1))

{

max = *(*p + i);

*(*p + i + 1) = *(*p + i);

*(*p + i) = max;

}

else max = *(*p + i+1);

}

return max;

}

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

int main()

{

//定义一维数组

int num[3][4] = { 4,5,2,6,12,7,5,0,3,1,3,4 };

cout << "Max=" << MAX(num, 3) << endl;

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

system("pause");

return 0;

}


写回答

1回答

imooc_澈

2018-04-16

您好,这个错误是对num这个变量的指针使用不当,内存越界产生的问题,问题出在else代码上,因为循环到数组最后一个值的时候*(*p+i+1)不再是数组的内容了,内存访问到这里越界了。

http://img.mukewang.com/climg/5ad4554c0001e20403820496.jpg

修改代码如下:直接每个值同max进行比较,大的就赋值给max就可以了

http://img.mukewang.com/climg/5ad4546b0001052303240474.jpg

如果解决了您的问题,请采纳,祝学习愉快~

0
hr__ChAi
h 非常感谢!
h018-04-17
共1条回复

0 学习 · 593 问题

查看课程