我试图获得这个数字的最大数量,该数字的数字从-20到30,但它会返回像这样的奇怪数字 - > 2255667如果一切顺利,这是不可能的。
int * ptomx(int a[],int n)
{
int max=-100;
int *point;
for(int i=0;i<=n;i++)
{
if(max<a[i])
{
max = a[i];
}
}
point = new int;
*point = max;
return point;
}
这是我在main()
中所做的int maxTemp;
maxTemp=*(ptomx(a,n));
cout<<"Max temp is:"<<maxTemp;
是否因为函数返回后函数中的指针被销毁,并在该内存位置给出一个随机数。如果是这样的话,它需要被解除引用但是如何?
答案 0 :(得分:7)
您正在读取数组末尾之外的值。这些值可以是任何,并且是导致错误结果的原因。
for(int i=0;i<=n;i++)
//^^
应改为
for(int i=0;i < n;i++)
答案 1 :(得分:1)
ptomx中的for循环超出了界限。
想一想: 如果你想要每一个值,但没有超出最后一个值,你想使用&gt; =? 如果你有10个值,它们在内存中的实际位置(理论上)是0-9。你应该只使用&gt;为了弥补这一点。
for(int i=0;i<n;i++)
这应该是它的样子。