Я опробовал следующий пример кода из книги «Понимание и использование указателей Си» (Риз), который иллюстрирует передачу двухмерного указателя массива в функцию:
void display2DArray(int arr[][5], int rows) {
for (int i = 0; i<rows; i++) {
for (int j = 0; j<5; j++) {
printf("%d", arr[i][j]);
}
printf("\n");
}
}
void main() {
int matrix[2][5] = {{1, 2, 3, 4, 5},{6, 7, 8, 9, 10}};
display2DArray(matrix, 2);
Когда я проверяю переменную arr с помощью отладчика gdb
во время выполнения, я получаю:
(gdb) p arr
$156 = (int (*)[5]) 0x7fffffffe1c0
(gdb) p &arr
$157 = (int (**)[5]) 0x7fffffffe198
(gdb) p *0x7fffffffe198
$158 = -7744
Что это за отрицательное число -7744
?
Я думал, что разыменование адреса 0x7fffffffe198
должно дать 0x7fffffffe1c0
?