lemon3 发表于 2019-1-3 22:32:01

还是返回问题,不过加了一个指针,好奇怪

这是做的某道题,请教!!!
int* twoSum(int* nums, int numsSize, int target) {
    int i,j;
    static int arr = {0};
    for(i=0;i<numsSize-1;i++)
    {
      for(j=i+1;j<numsSize;j++)
      {
            if(*(nums+i)+*(nums+j) == target)
            {
                arr = i;
                arr = j;
                return arr;
            }
      }
    }
    return 0;
}
以上是正解
我在自己的编译器环境下编写了一个完整的代码,发现能过,然后我把函数部分放到测试里面就过不了了。
我现在还不知道函数里面为什么有那个指针int *twoSum;
而且int* twoSum和int *twoSum、int * twoSum是同一个意思吧。
#include<stdio.h>
#include<stdlib.h>

int* twoSum(int* nums, int numsSize, int target) {
    int i,j;
    for(i=0;i<numsSize-1;i++)
    {
      for(j=i+1;j<numsSize;j++)
      {
            if(*(nums+i)+*(nums+j) == target)
            {
                printf("%d %d\n", i, j);
                return 0;
            }
      }
    }
    return 0;
}
int main()
{
        int numsSize, target;       
        scanf("%d%d", &numsSize, &target);
        int *nums = (int *)malloc(numsSize*sizeof(int));
        int i;
        for(i=0;i<numsSize;i++)
        {
                scanf("%d", nums+i);
        }
        twoSum(nums, numsSize, target);
        return 0;
}

BngThea 发表于 2019-1-4 08:54:48

*的位置无所谓,看习惯
这里表示返回值是一个int类型指针

lemon3 发表于 2019-1-4 09:17:15

BngThea 发表于 2019-1-4 08:54
*的位置无所谓,看习惯
这里表示返回值是一个int类型指针

这个题为什么返回一个指针就可以有答案了

BngThea 发表于 2019-1-4 09:22:20

lemon3 发表于 2019-1-4 09:17
这个题为什么返回一个指针就可以有答案了

没详细看你给的代码,但是正确答案中返回的是一个数组名,需要一个指针,你的代码没有返回值,或者说返回的是一个0而已

lemon3 发表于 2019-1-4 09:52:38

BngThea 发表于 2019-1-4 09:22
没详细看你给的代码,但是正确答案中返回的是一个数组名,需要一个指针,你的代码没有返回值,或者说返回 ...

大佬一定刷过LeetCode吧,这就是其中比较简单的一个,但是我不知道它的详细代码,也就不明白它怎么就返回一个数组了
页: [1]
查看完整版本: 还是返回问题,不过加了一个指针,好奇怪