C++程序中数组返回值的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++程序中数组返回值的问题相关的知识,希望对你有一定的参考价值。
#include<iostream>
#include<ctime>
#define Max 5
using namespace std;
int array[Max];
void createArray()
srand((unsigned)time(0));
for( int i=0; i<Max; i++)
array[i] = (int)(rand()%100);
void output(int *Output)
for( int i=0; i<Max; i++)
cout<<Output[i]<<" ";
if ( (i+1) % 5 == 0 )
cout<<endl;
int *insert()
int temp;
int insert1[Max];
for ( int i=0; i<Max; i++)
for ( int j=i+1; j<Max; j++)
if ( array[i] > array[j] )
temp=array[i];array[i]=array[j];array[j]=temp;
insert1[i] = array[i];
output(insert1);
return insert1;
int main()
createArray();
output(array);
output(insert());
return 0;
为什么主函数里第二个调用output函数输出的结果是:
-858993460 -858993460 -858993460 -858993460 4
是哪里出错了,为什么出错?希望给出详细的解说。
函数返回后,是返回一个地址吧,那这个地址应该被调用的output函数传到output函数里了吧,那之后的事也和insert1无关了吧,释放了insert1内存,会把里面的内容也释放?具体是怎么样释放的?
参考技术B 用法不对,insert1是局部变量,函数返回内存就释放了,所以不要将insert1返回,可以返回array,它是全局变量,程序在,它就在,可以返回它的地址追问函数返回后,是返回一个地址吧,那这个地址应该被调用的output函数传到output函数里了吧,那之后的事也和insert1无关了吧,释放了insert1内存,会把里面的内容也释放?具体是怎么样释放的?
追答函数返回后,是返回一个地址吧,//对
那这个地址应该被调用的output函数传到output函数里了吧,//对
那之后的事也和insert1无关了吧,释放了insert1内存,//对
会把里面的内容也释放?//不一定, 它只是从内存管理结构中释放了一个类似于节点的东西,并没清空,如果该时间段没有栈内存申请,可能还在,如果有,可能就被覆盖掉了
以上是关于C++程序中数组返回值的问题的主要内容,如果未能解决你的问题,请参考以下文章