c - 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;
}
解决方案
这里的问题是调用函数不知道返回数组的大小,它只是循环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;
}
推荐阅读
- java - 使用 HashMap 比较两个不同类型的列表
- math - 确定基于用户位置的经纬度
- command-line - ImageMagick 使用 alpha 通道来控制计算最小、最大和平均图像值
- spark-java - 请求的路由尚未在 Spark 中映射为 Accept
- c# - 我将如何计算winform中剩余的时间?
- xamarin.forms - Xamarin Forms Grid 条件 RowSpan
- ruby - 如何将连接字符串与 sequel 一起用于 postgresql
- java - onChild 在 FirebaseRecyclerAdapter 中添加
- r - list() 没有在 R 的 for 循环中更新
- apache-spark - 使用 IntelliJ IDEA 将 Hive 与在本地模式下运行的 Spark 连接