c语言 函数返回数组指针?

Python013

c语言 函数返回数组指针?,第1张

由于你在子函数int *shuzu(void)中定义的数组 a[4];属于局部变量,在子函数结束时会被释放,所以返回的指针变成野指针,会乱码;简单的解决方法有两种,1. 将数组定义在主函数之前(#include <stdio.h>下面),那么就变成了全局变量,不会被释放了;2.使用malloc或者calloc开空间后再赋给这个数组,这样也不会被释放了;第一种方法有缺点,以后学到全局变量的时候会知道,第二种方法估计你还没学到,不过很简单,百度一下就会了~~~

首先,你不应该返回局部变量的指针,因为局部变量在离开函数后就会被销毁。如果你想这样返回一个数组的话,你应该malloc出一个数组来返回。

至于应该return什么,return

(malloc出来的那个指针)就可以了。

例如

int**

foo()

{

int

**p

=

(int

**)malloc(sizeof(int

*)*10)

...

...

...

return

p

}

这个p指向一个内存段,这个内存段存有十个int*类型的元素。