我已经被困在这个问题上一段时间了,我不知道该如何处理这个问题。
#include <stdio.h>
#include <stdlib.h>
int ItSum(int *array, int array_size);
int main(){
int array_size, isum, sum;
printf("\nPlease enter the size of the array:");
scanf("%d",&array_size);
int *array;
array=(int*)malloc(array_size*sizeof(int));
printf("Please enter the elements of the array:");
int i;
for(i=0; i<array_size;i++)
scanf("%d",&array[i]);
printf("\nThe elements of the array are:");
for(i=0; i<array_size; i++)
printf(" %d", array[i]);
isum=ItSum(*array,array_size);
printf("\nThe sum of the elements using iteration is:%d", isum);
free (array);
return 0;
}
int ItSum(int *array, int array_size){
int x, itsum;
itsum=0;
for (x=0;x<array_size;x++)
itsum+=array[x];
return itsum;
}
所以这里是我的代码到目前为止,分配是编写一个迭代和递归函数,在20下将五个正整数相加(教授希望我们测试的输入有一堆底片和20以上的整数。但是,当我尝试运行到目前为止我输入数组元素时出现分段错误。我不确定这里到底出了什么问题,所以任何提示或线索都会非常感激。谢谢。
答案 0 :(得分:1)
问题在编译器警告中公开:
$ cc -Wall test.c
test.c:19:16: warning: incompatible integer to pointer conversion passing 'int' to parameter of type 'int *'; remove *
[-Wint-conversion]
isum=ItSum(*array,array_size);
^~~~~~
test.c:3:16: note: passing argument to parameter 'array' here
int ItSum(int *array, int array_size);
^
test.c:6:27: warning: unused variable 'sum' [-Wunused-variable]
int array_size, isum, sum;
^
生成了2个警告。
这一行:
isum=ItSum(*array,array_size);
应该是:
isum=ItSum(array,array_size);
答案 1 :(得分:1)
isum=ItSum(*array,array_size);
在这里你传递*array
作为参数,但你应该只传递array
,这是一个指向int
的指针,因为你的函数将指向int
的指针作为参数。 *array
引用地址处的值,因此将int
作为参数传递,即数组的第一个值。