我的“C”代码中的访问冲突分段错误错误

时间:2012-03-13 19:48:06

标签: c segmentation-fault access-violation

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

调用此函数后,我收到此错误:
访问冲突,分段错误

1 个答案:

答案 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) );