C语言 怎么返回一个数组

Python011

C语言 怎么返回一个数组,第1张

你想返回一个数组,因为你在一个函数内创建了数组,属于局部变量,所以他在stack部分,而stack部分是用后类似于销毁的,你返回的地址类似于一块垃圾的地址,所以编译警告。你要想返回函数内创建的数组地址的话需要

//inside a function

{

    // n is the size of the array

    int* array = (int *)malloc(sizeof(int)*n)

    

    /*

        do something with array

    */

    return array

}

这样这个数组建立在heap堆上,调用完函数还在,而你返回了那个堆上数组的首地址,这样就没问题了。

用完free(array)

楼上用static不推荐,用static的话会在整个程序的run time运行时都占用空间。而是用malloc,动态申请释放更合理。

C语言返回值不支持返回数组,不过可以通过返回指针类型,用以替代数组。在C语言中,数组大多数时候是可以用指针替代的。

不过需要注意的是,不能够返回在函数内部定义的局部变量数组,因为一旦函数退出,局部变量就会被释放,导致数组指针无效。

可以返回以下几种:

1 全局变量,或者全局变量空间内的一个地址。

2 静态局部变量,或者静态局部变量内部的一个地址。

3 从参数传入的数组/指针变量,或者在其上做的合法偏移。

4 在数组内部动态申请的空间首地址。