Рубрики

C | Массивы | Вопрос 4

Вывод следующей программы?

#include<stdio.h> 

    

int main() 

  int a[] = {1, 2, 3, 4, 5, 6}; 

  int *ptr = (int*)(&a+1); 

  printf("%d ", *(ptr-1) ); 

  return 0; 

}

(А) 1
(Б) 2
(С) 6
(D) Ошибка выполнения

Ответ: (с)
Объяснение: & a — это адрес всего массива a []. Если мы добавим 1 к & a, мы получим «базовый адрес [] + sizeof (a)». И это значение типизировано до int *. Таким образом, ptr указывает память сразу после того, как 6 сохранено. ptr типизируется до «int *», и печатается значение * (ptr-1). Поскольку ptr указывает на память после 6, ptr — 1 указывает на 6.
Тест на этот вопрос

Рекомендуемые посты:

C | Массивы | Вопрос 4

0.00 (0%) 0 votes