gpt4 book ai didi

c - 使用指针的段错误 (SIGSEGV)

转载 作者:行者123 更新时间:2023-11-30 19:30:06 25 4
gpt4 key购买 nike

我正在思考 leetcode 问题 167,但我的代码遇到了段错误 (SIGSEGV) 问题。下面是我的c代码,预期的答案是[1,3]。

#include<stdio.h>
#include<stdlib.h>
/**
* Return an array of size *returnSize.
* Note: The returned array must be malloced, assume caller calls free().
*/
int* twoSum(int* numbers, int numbersSize, int target, int* returnSize) {

int i=0,j=0;
for(i=0;i<numbersSize;i++)
{
for(j=i+1;j<numbersSize;j++)
{
if(numbers[i]+numbers[j]==target)
{
*returnSize = 2;
int *indexes = malloc(*returnSize * sizeof(int));
indexes[0] = i + 1;
indexes[1] = j + 1;
return indexes;
}
}
}
*returnSize = 0;
return NULL;
}

int main()
{
int arr[]={2,3,4};
int *a;
int *p=twoSum(arr,3,6,a);
printf("%d,%d",*p,*(p+1));

return 0;
}

https://ide.geeksforgeeks.org/Mk0sgwTsZf

最佳答案

首先,a未初始化,可以调用malloc函数分配内存或将指针传递给本地int a变量

int a;
int *p=twoSum(arr,3,6,&a);

第二,你的twoSum函数可以返回NULL值,所以你应该添加条件来检查这个返回值是否不为NULL

int a;
int *p=twoSum(arr,3,6,&a);
if(p)
printf("%d,%d",*p,*(p+1));

关于c - 使用指针的段错误 (SIGSEGV),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51647802/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com