xiaohuanghuang_
xiaohuanghuang_
采纳率87%
2021-03-08 07:50

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

已采纳
/**
 * 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_learner cpp_learner 1月前

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

    点赞 评论 复制链接分享