稍微有些编程经验的朋友都会知道一个函数是无法返回一个局部数组的,至于原因,我想从两个方面进行说明,虽然并不是这两个方面都对其有影响,但我认为在这个问题上我们都该了解的东西:
① 函数的返回类型不能为一个数组类型。
这个就是说,作为函数返回类型的不能为一个数组,我们要想返回一系列的值,只能用一个指针来代替了,返回指向这一系列值的第一个元素的指针。
② 局部数组,具有局部作用域,当函数调用结束之后,数组也就被操作系统销毁了,即回收了他的内存空间,它里面的东西随时都有可能被覆盖。虽然此时我们获得了指向这一块内存的指针,但此刻里面的东西很大可能都不是我们想要的了。
我们又该怎么解决这个问题呢?
1: 返回一个静态的数组
即我们在定义数组的时候吧数组定义成为静态的。
如:
char *fun()
{
static char a[] = "hello,world";
return a;
}
2: 动态分配内存
如:
char *fun()
{
char *a = (char*)malloc(sizeof(char)*100);
a = "hello,world";
return a;
}