Ошибка ошибки сегментации доступа в моем коде "C" - PullRequest
0 голосов
/ 13 марта 2012
int sumH(int *arr, int var, int row) {
    if(var > 7) return(0);
    return( arr[(row*8 - 8) + var] + sumH(arr, var+1, row) );
}

приведенный выше код является "ошибочным" кодом.

У меня есть объявленный массив:

int array[64] = { some numbers here };
int *ptr = array; //pointer to array
sumH(ptr, 0, 1);  //call to the buggy function

после вызова этой функции я получаю эту ошибку:
нарушение прав доступа, ошибка сегментации

1 Ответ

0 голосов
/ 14 марта 2012

Вы заявляете, что объявляете:

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) );
...