int sumH(int *arr, int var, int row) {
if(var > 7) return(0);
return( arr[(row*8 - 8) + var] + sumH(arr, var+1, row) );
}
上面的代码是“buggy”代码。
我有一个声明的数组:
int array[64] = { some numbers here };
int *ptr = array; //pointer to array
sumH(ptr, 0, 1); //call to the buggy function
调用此函数后,我收到此错误:
访问冲突,分段错误
答案 0 :(得分:0)
你声明你声明:
int array[64] = { 64 random numbers here }
然后通过:
sumH(&array, 0, 1)
您实际传递的是指向数组的指针,该指针实际上是指向第一个元素的指针。然后尝试取消引用该指针加一,这是不正确的。您可以传入数组本身:
sumH(array, 0, 1)
或者像这样修改你的功能:
return( (*arr)[(row*8 - 8) + var] + sumH(arr, var+1, row) );