如何将动态分配的数组返回给main?

时间:2019-06-30 09:47:45

标签: c function return malloc dynamic-arrays

我怀疑在将需要保存的值保存到动态分配的数组以及返回所述动态分配的数组时遇到问题。

显然,这是我要在LeetCode上解决的一个著名的面试问题。该函数接收一个数组,其大小,一个目标和一个指针(据我了解,我必须为此指针分配一个动态数组)。我必须检查数组中是否有两个数字的总和等于目标,如果是这种情况,那么我必须将它们的索引保存在动态分配的数组中(据我了解,其大小为2),然后我必须返回这个数组。

我尝试查看LeetCode上提供的解决方案,虽然我理解它,但是它并不能帮助我了解解决方案的问题。

我曾尝试在stackoverflow上寻找类似的问题,但是我也找不到能帮助我了解自己在做什么和如何纠正错误的东西。

注意:必须对返回的数组进行malloc,假设调用者调用了free()。​​

int* twoSum(int* nums, int numsSize, int target, int* returnSize){
    int i,j;

    //Allocating a dynamic memory to the received pointer, i.e.
    //setting a dynamic array.
    returnSize=malloc(2*sizeof(int));
    if(!returnSize){
        printf("Memory allocation error.\n");
        exit(1);
    }

    //Searching for two numbers in 'nums' whose sum is equal to 'target',
    //if found, save their indices to the dynamically allocated array
    //and return it, if not, return the array with [-1,-1].
    for(i=0;i<numsSize;i++){
        for(j=i+1;j<numsSize;j++){
            if(nums[i]+nums[j]==target){
                returnSize[0]=i;
                returnSize[1]=j;
                return returnSize;
            }
        }
    }

    returnSize[0]=-1;
    returnSize[1]=-1;
    return returnSize;
}

输出nums = [2,7,11,15],目标= 9,

是一个动态分配的数组,其值为[0,1]。

0 个答案:

没有答案