c++ 如何让函数返回数组

1,不要return数组的指针(即数组名),这样是错的

函数体内部创建的变量都是局部变量,当函数运行结束的时候,都会抛弃,也就是说你只返回了一个temp指针,这个指针确实是你想要的,这没有问题,但是它指向的内容在函数结束也就是return的那一刻之后就已经物是人非了。所以你用这个这个指针去访问的内容也不是你想要的内容了。

2解决方法:动态内存分配,就是new和delete的配合使用。在函数里用new关键字创建一个数组,这样这块地址对应的内容就属于你管理了,再也不会在函数结束的时候被回收了,你也就可以通过返回的指针来访问数组了,最后再delete一下。

千万不要返回一个局部变量的指针或引用,因为你返回也是没用的,得到的指针所指内容在函数结束后就已经变了。

int *fun2() { int *temp = new int[arrlen];//区别就是这里多个new for (int i = 0; i < arrlen; i++) { temp[i] = i; } return temp; }

在调用后的地方delete

猜你喜欢

转载自blog.csdn.net/sinat_41852207/article/details/86669088