gpt4 book ai didi

c - 段错误错误

转载 作者:行者123 更新时间:2023-11-30 20:28:04 26 4
gpt4 key购买 nike

我收到段错误错误。谁能告诉我为什么?

        #include <stdio.h>
#include <stdlib.h>

char sumArrays(int * arr1[], int * arr2[], int length, int count){
if(count == length){
return ' ';
}
else{
int sum = 0;
sum = *arr1[count] + *arr2[count];
char ch = '
ch = ch + (char)sum;
return ch + sumArrays(arr1, arr2, length, count+1);
}
}

int main(int argc, char * arr[]){
int length = 6;
printf("Enter the first row of 6 integers:");
int * arr1 = malloc(length * sizeof(int));
int * arr2 = malloc(length * sizeof(int));
int counter = 0;
int number = 0;
while(counter < length){
scanf("%d", &number);
arr1[counter]=number;
counter++;
}
counter = 0;
printf("Enter the second row of 6 integers:");
while(counter < length){
scanf("%d", &number);
arr2[counter] = number;
counter++;
}
char sum = sumArrays(&arr1, &arr2, length, 1);
free(arr1);
free(arr2);
printf("Their sums are : %c ", sum);
return 0;
}

我是 C 语言新手,对该语言了解不多。我曾是能够用Java编写程序并使其运行。如有任何帮助,我们将不胜感激!

谢谢!

编辑:段错误已修复,但现在它不会打印总和的实际字符....

最佳答案

这是“&array 不创建指针数组”的另一种情况。

这是一个指针数组:

 int * arr1[]

这将创建一个指向整数数组的指针;

&arr1     // That is, one pointer to your array of integers. 

因此,当您访问 count > 0 时,编译器会尝试读取您未给出的指针值。

*arr1[count]

修复方法是删除此处和那里的星号以及其他位置的 &:

删除*

   char sumArrays(int * arr1[], int * arr2[], int length, int count){
sum = *arr1[count] + *arr2[count];

删除&:

char sum = sumArrays(&arr1, &arr2, 长度, 1);

我个人也会改变这一点:

int length = 6;
int * arr1 = malloc(length * sizeof(int));
int * arr2 = malloc(length * sizeof(int));

至:

const int length = 6;
int arr1[length];
int arr2[length];

并摆脱free(arr1); free(arr2) 在底部。在数组变得相当大之前不需要分配数组,几百个整数就完全没问题了。

关于c - 段错误错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14491747/

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