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
    关注

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

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

报告相同问题?

悬赏问题

  • ¥15 FPGA-SRIO初始化失败
  • ¥15 MapReduce实现倒排索引失败
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码
  • ¥50 随机森林与房贷信用风险模型
  • ¥50 buildozer打包kivy app失败
  • ¥30 在vs2022里运行python代码
  • ¥15 不同尺寸货物如何寻找合适的包装箱型谱
  • ¥15 求解 yolo算法问题