请问老师这个错误是什么意思
来源:2-14 编程练习
Mr__ChAi
2018-04-15 14:30:48
代码如下:
#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回答
您好,这个错误是对num这个变量的指针使用不当,内存越界产生的问题,问题出在else代码上,因为循环到数组最后一个值的时候*(*p+i+1)不再是数组的内容了,内存访问到这里越界了。
修改代码如下:直接每个值同max进行比较,大的就赋值给max就可以了
如果解决了您的问题,请采纳,祝学习愉快~
相似问题