C++ 从函数返回指针会给出奇怪的数字
我正在尝试获取该数组的最大数,该数组的数字范围为-20到30,但它会返回像-->2255667这样的奇怪数字,如果一切正常,这是不可能的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 =
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。