防弹是韩国一线男团吗:C++中函数返回值是否可以是个数组?

来源:百度文库 编辑:查人人中国名人网 时间:2024/05/03 10:27:28
C++中函数返回值是否可以是个数组?
如果是,一唯、二维、三维都可以吗?
请指教
如果是Java,那该怎么办?

在C++返回数组会导致一些问题的.
比如
int* fun1()
{
int a[10];
return a;
}
//这可能会导致内存问题,因为a是fun1的局部变量,当fun1退出后,a指向的空间即被释放,而a的值又被你return回去保存了,以后再用的时候会使用成一个指向未分配空间的指针。

就算是用malloc或new,会出现内存泄漏的问题
int* fun2()
{
int* a;
a=(int*)malloc(10*sizeof(int));
return a;
}
这样你没法释放a,即malloc没有free与之对应,new也是同理,没有delete对应(别说你会在main只记得,函数的使用者不会知道一个函数是不是分配了空间的)。

不可以。可以用指针。

可以!!
几维都行,因为返回的是个指针,是地址,是连续地址空间的首地址,由这个地址加上偏移量就可以找到数组中其他元素了

函数的返回值可以是一个n维数组的数组名,比如
int a[M][N];
fun(int **a);
这样的声明是合法的。
但是
fun2(int a[M][N]);
这样的声明就不好了,在vc中编译是无法通过的。

不可以,但是可以返回指向数组的指针,如下所示:
#include <stdio.h>
int a[4];
int (*func())[4]
{
return &a;
}
int main()
{
printf("%p\n",func());
return 0;
}