gpt4 book ai didi

c - 返回数组 C 的指针时出现指针段错误

转载 作者:行者123 更新时间:2023-11-30 14:50:43 24 4
gpt4 key购买 nike

我正在尝试解决一个问题(鉴于当前的代码框架)并且在指针方面遇到问题。我在 printf("%d", result[result_i]); 处遇到段错误在下面的代码中声明:

#include <math.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <assert.h>
#include <limits.h>
#include <stdbool.h>

int* solve(int a0, int a1, int a2, int b0, int b1, int b2, int *result_size){
// Complete this function
*result_size = 2;
int* scores[*result_size];

*scores[0] = ((a0>b0)?1:0)+ ((a1>b1)?1:0)+ ((a2>b2)?1:0);
*scores[1] = ((a0<b0)?1:0)+ ((a1<b1)?1:0)+ ((a2<b2)?1:0);

return *scores;
}

int main() {
int a0;
int a1;
int a2;
scanf("%d %d %d", &a0, &a1, &a2);
int b0;
int b1;
int b2;
scanf("%d %d %d", &b0, &b1, &b2);
int result_size;
int* result = solve(a0, a1, a2, b0, b1, b2, &result_size);
for(int result_i = 0; result_i < result_size; result_i++) {
if(result_i) {
printf(" ");
}
printf("%d", result[result_i]);
}
puts("");


return 0;
}

我不确定在solve()函数中分配指针(以及在同一函数中返回指向数组的指针)时做错了什么。我想知道当从所述指针指向并分配不同的值时我做错了什么部分。谢谢。

最佳答案

您的 int* 解决函数可能是问题所在。

为该数组分配内存后,应该可以解决问题。

int* solve(int a0, int a1, int a2, int b0, int b1, int b2, int *result_size){
// Complete this function
*result_size = 2;
int* scores = malloc(sizeof(int) * (*result_size));

scores[0] = ((a0>b0)?1:0)+ ((a1>b1)?1:0)+ ((a2>b2)?1:0);
scores[1] = ((a0<b0)?1:0)+ ((a1<b1)?1:0)+ ((a2<b2)?1:0);

return scores;
}

在 int main() 的底部,释放数组是一个很好的做法:

free(result);

关于c - 返回数组 C 的指针时出现指针段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48857349/

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