【发布时间】:2019-07-10 15:38:27
【问题描述】:
我正在尝试实现一个辅助函数,它对给定数组中的整数求和,然后使用指针更改主函数中的“array_sum”变量,而不是在帮助函数中返回整数。但是,我收到以下错误,“Segmentation Fault (core dumped)”任何帮助,我将不胜感激
void get_sum(int array[], int* array_sum)
{
int length = sizeof(array)-1;
int i = 0;
for(i=0;i<length;i++){
*array_sum+= array[i];
}
}
main()
{
int array_sum;
int my_array[] = {25, 18, 6, 47, 2, 73, 100};
get_sum(my_array, array_sum);
printf("sum = %d", array_sum);
}
预期结果:
总和 = 271
实际结果:
分段错误(核心转储)
【问题讨论】:
-
打开所有警告,并使用最近的编译器。例如。尝试在wandbox.org 上运行它。 (选择语言“C”、编译器“GCC”、一致性模式“C11”和“-pedantic-errors”。)
-
除了下面给出的答案之外,您还需要将地址传递给
get_sum(my_array, array_sum);行中的变量array_sum,就像get_sum(my_array, &array_sum);一样