Ale*_*dis 1 c++ pointers return function-pointers function
我试图得到这个数组的最大数量,其数字从-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;
}
Run Code Online (Sandbox Code Playgroud)
这是我在main()做的事情
int maxTemp;
maxTemp=*(ptomx(a,n));
cout<<"Max temp is:"<<maxTemp;
Run Code Online (Sandbox Code Playgroud)
是因为函数返回后函数中的指针被销毁,并在该内存位置给出一个随机数.如果是这样的话,它需要被解除引用但是如何?
您正在读取数组末尾之外的值.这些值可以是任何值,并且是导致错误结果的原因.
for(int i=0;i<=n;i++)
//^^
Run Code Online (Sandbox Code Playgroud)
应该改为
for(int i=0;i < n;i++)
Run Code Online (Sandbox Code Playgroud)