首页 > 解决方案 > C语言返回数组指针的问题

问题描述

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

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;
}


在此处输入图像描述

标签: cdata-structures

解决方案


这里的问题是调用函数不知道返回数组的大小,它只是循环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;
}



推荐阅读