Рубрики

C | Основы указателя | Вопрос 12

Рассмотрим этот код C, чтобы поменять местами два целых числа и эти пять операторов после него:

void swap(int *px, int *py) 

   *px = *px - *py; 

   *py = *px + *py; 

   *px = *py - *px; 

}

S1: сгенерирует ошибку компиляции
S2: может генерировать ошибку сегментации во время выполнения в зависимости от переданных аргументов
S3: правильно реализует процедуру обмена для всех входных указателей, относящихся к целым числам, хранящимся в ячейках памяти, доступных для процесса
S4: правильно реализует процедуру обмена для некоторых, но не для всех допустимых указателей ввода
S5: может добавлять или вычитать целые числа и указатели.

(А) S1
(B) S2 и S3
(С) S2 и S4

(D) S2 и S5

Ответ: (с)
Объяснение: S2: Может генерировать ошибку сегментации, если значение в указателях px или py является постоянным или px или py указывает на недопустимую область памяти
S4: может не работать для всех входов, так как может произойти арифметическое переполнение

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

C | Основы указателя | Вопрос 12

0.00 (0%) 0 votes