我在每个竞争性编程平台中都遇到了这个问题,每当从函数返回指向数组的指针时,它返回的都是空的,而在同一函数中进行打印感觉很好。以这个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;
}
答案 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;
}