Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/154.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从函数返回指针会给出奇怪的数字_C++_Function_Pointers_Return_Function Pointers - Fatal编程技术网

C++ 从函数返回指针会给出奇怪的数字

C++ 从函数返回指针会给出奇怪的数字,c++,function,pointers,return,function-pointers,C++,Function,Pointers,Return,Function Pointers,我正在尝试获取该数组的最大数,该数组的数字范围为-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 =

我正在尝试获取该数组的最大数,该数组的数字范围为-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;
}
int*ptomx(inta[],intn)
{
int max=-100;
整数*点;

对于(int i=0;i您正在从数组末尾以外的位置读取值。这些值可以是任何值,并且是导致错误结果的原因

 for(int i=0;i<=n;i++) 
              //^^

for(int i=0;i您正在从数组末尾以外的位置读取值。这些值可以是任何值,并且是导致错误结果的原因

 for(int i=0;i<=n;i++) 
              //^^

for(inti=0;iptomx中的for循环超出了范围

想想看: 如果您想要每一个值,但最后一个值之外没有其他值,是否要使用>=? 如果您有10个值,那么它们在内存中的实际位置(理论上)是0-9。您应该只使用>来补偿这一点

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

for(inti=0;iptomx中的for循环超出了范围

想想看: 如果您想要每一个值,但最后一个值之外没有其他值,是否要使用>=? 如果您有10个值,那么它们在内存中的实际位置(理论上)是0-9。您应该只使用>来补偿这一点

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

用于(int i=0;i您有内存泄漏。返回的指针永远不会空闲。为什么不将值作为正常的、非指针的整数返回?我应该这样做,因为我正在学习使用指针。@Alexmoulidis您不可能完全那样做,因为在
main
中使用指针也会泄漏内存e内存。考虑使用
int*maxTemp;
和以后的
delete maxTemp;
。您有内存泄漏。返回的指针永远不会空闲。为什么不将该值作为一个普通的、非指针的整数返回?我应该这样做,因为我正在学习使用指针。@Alexmoulidis您不可能完全不这样做这是因为
main
中指针的特殊使用也会泄漏内存。考虑使用
int*maxTemp;
和以后的
delete maxTemp;
。Thx很多我觉得很愚蠢,因为我已经尝试了3个小时来解决这个问题,而且非常简单。@Alexmoulid最好不要在您的情况下使用指针,因为您实际上并不需要在我的例子中,最好不要使用C++,回到java:PTHX我觉得很愚蠢,我现在试图修复这个问题3个小时,而且很简单。@ AlxyMouLIDILE在你的情况下根本不用指针,因为你没有真正的操作它。在我的情况下,最好不要用C++来恢复到java:P。