c语言中怎样返回一个数组?

Python017

c语言中怎样返回一个数组?,第1张

在C语言中,无法直接返回一个数组,但是可以通过返回对应类型指针的方式,返回数组。

在大多数情况下,一维数组和一维指针是可以通用的。

比如,定义一个函数,申请一定长度的整型动态数组,其长度用参数传入,并将结果返回。如出错,返回空指针NULL。 代码可以写成如下形式:

int *int_array_create(int n)//参数n为数组元素个数

{

    int *r 

    if(n<=0) return NULL//参数错误

    r = (int *)malloc(sizeof(int)*n)//申请内存空间,大小为n个int长度。

    return r//返回得到的整型数组的指针。 

}

你想返回一个数组,因为你在一个函数内创建了数组,属于局部变量,所以他在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,动态申请释放更合理。