函数返回数组指针

来源:互联网 发布:上海网络视听季 编辑:程序博客网 时间:2024/07/17 20:23

很多场景下,需要主函数获取子函数产生的数组。然而子函数的数组声明在栈上,函数退出时会自动清除该内存空间的内容,直接返回指针就会出事。

有两种方法可以解决这个问题:

  • 在主函数中事先声明数组,然后将其指针传到子函数中进行修改。
    例如:

    int array[100];int num=0;// void func(int *array, int &num)func(array,num);

但是这样有一个问题,就是需要事先分配好大小,可能会造成溢出或者浪费。因此考虑有第二种选择。

  • 使用new来在子函数中为数组分配空间。因为new操作将数组在堆上分配内存,因此必须要手动释放才会销毁其中的内容。因此可以放心的把该数组的指针返回给主函数。——记得最后释放掉。
    例如:

    int *func(){    int k = 10;    int * res = new int[k];    for(int i =0;i<k;i++){        res[i]=i;    }    return res;}int * res = func();
0 0
原创粉丝点击