xiaohuanghuang_ 2021-03-08 07:50 采纳率: 73.3%
浏览 98
已采纳

想明白这个函数为什么返回两个指针?

/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* twoSum(int* nums, int numsSize, int target, int* returnSize){
 for (int i = 0; i < numsSize; i++) {
        for (int j = i + 1; j < numsSize; j++) {
            if (nums[i] + nums[j] == target) {
                int* ret = malloc(sizeof(int) * 2);
                ret[0] = i, ret[1] = j;
                *returnSize = 2;
                return ret;
            }
        }
    }
    *returnSize = 0;
    return NULL;

}

另外,一个函数调用数组需要知道两个指针(指向开始和结尾)或知道开始还有一个表示长度的整型,但是用指针返回数组呢?如何返回一个让编译器知道长度的数组呢?难道是像字符串那样一直读取直到'\0'吗?那么调用的时候就只需要知道开始就好了。我不明白。

  • 写回答

1条回答 默认 最新

  • cpp_learners 2021-03-08 08:13
    关注

    该函数体实际上是返回三个指针,一个指针返回值,两个指针参数返回。另外,函数调用数组,一般需要传入数组的首地址即可,因为数组的地址是连贯的;至于长度,你也需要将其作为参数传入函数中, 否则编译器是无法知道该数组的长度是有多长。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度