C语言返回数组指针的问题

时间:2019-10-18 14:45:21

标签: c data-structures

我在每个竞争性编程平台中都遇到了这个问题,每当从函数返回指向数组的指针时,它返回的都是空的,而在同一函数中进行打印感觉很好。以这个2数字和问题为例:-

int* twoSum(int* nums, int numsSize, int target, int* returnSize){
    int* returnArr = (int*)malloc(2*sizeof(int));
    for(int i=0; i<numsSize-1; i++){
        for(int j=i+1; j<numsSize; j++){
            if(nums[i]+nums[j] == target){
                *returnArr = i;
                *(returnArr+1) = j;
                printf("%d %d", *returnArr, *(returnArr+1)); //working correctly
                return returnArr; //return []
            }
        }
    }        
    return NULL;
}


enter image description here

1 个答案:

答案 0 :(得分:0)

这里的问题是调用函数不知道其大小 返回数组,而它只是为 returnSize 循环,因此我们必须设置 returnSize

的值

解决方案:-

int* twoSum(int* nums, int numsSize, int target, int* returnSize){
    int* returnArr = (int*)malloc(2*sizeof(int));
    *returnSize = 2;
    for(int i=0; i<numsSize-1; i++){
        for(int j=i+1; j<numsSize; j++){
            if(nums[i]+nums[j] == target){
                *returnArr = i;
                *(returnArr+1) = j;
                printf("%d %d", *returnArr, *(returnArr+1));
                return returnArr;
            }
        }
    }        
    return NULL;
}