【发布时间】:2020-01-28 18:29:16
【问题描述】:
int* twoSum(int* nums, int numsSize, int target, int* returnSize){
int i = 0, j = 0;
for(i=0; i < numsSize; i++)
{
for(j = i+1; j < numsSize; j++)
{
if(nums[j] == target - nums[i])
{
int *index = (int *)malloc(sizeof(int) * 2);
index[0] = i;
index[1] = j;
return index;
}
}
}
return NULL;
}
我正在编写以下代码
给定nums = [2, 7, 11, 15],target = 9,
因为nums[0] + nums[1] = 2 + 7 = 9,
返回[0, 1]。
我尝试调试代码,i 和 j 值 0 和 1 符合预期。但是现在我在返回索引时遇到了这个问题。它显示为分段错误。谁能更正上面的代码?
【问题讨论】:
-
使用
gdb运行您的程序,然后运行backtrace。它会告诉你它在哪一行发生了段错误。 -
return index指令不可能出现段错误。您的代码看起来正确,没有问题。您需要在问题中添加minimal reproducible example。您的问题出在其他地方。 -
你的代码没问题..你在其他地方有问题。 my solution
-
我看到你使用
NULL作为返回值:stackoverflow.com/questions/59437282/… -
@houssam 我刚刚看到了您的解决方案。但我没有明白将 malloc 类型转换为 void 的目的是什么。你能解释一下吗?
标签: c