/**
* 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'吗?那么调用的时候就只需要知道开始就好了。我不明白。
该函数体实际上是返回三个指针,一个指针返回值,两个指针参数返回。另外,函数调用数组,一般需要传入数组的首地址即可,因为数组的地址是连贯的;至于长度,你也需要将其作为参数传入函数中, 否则编译器是无法知道该数组的长度是有多长。