#c
Можно ли применять операции сравнения к указателям в Си? Я так предполагаю, что да,
но не понимаю для чего и в каких целях используется.
Ответы
Ответ 1
Разумеется можно. Не совсем понятен вопрос "для чего", ибо операции сравнения применяются к указателям для точно тех же целей, для которых они применяются к любым другим типам. Сравнение значения указателя, например, со значением NULL - повсеместная и повседневная практика. Далее отсюда: Сравнивать на равенство/неравенство можно любые указатели, при условии совместимости типов, независимо от того, указывают ли они в один массив или нет. Допускается сравнение указателей на данные с указателями void *. Язык гарантирует равенство указателей, если Оба являются нулевыми указателями Оба являются указателями на один и тот же объект или функцию. (Включая указатель на объект и указатель на первый подобъект этого объекта) Оба являются указателями на один и тот же воображаемый элемент, располагающийся за последним элементом массива Один является указателями на воображаемый элемент массива (располагающийся за последним элементом), а другой - на первый элемент следующего массива, непосредственно следующего за первым в памяти Разумеется, формирование значений указателей, участвующих в сравнении, должно было быть выполнено без неопределенного поведения. Упорядочивающие сравнения разрешается применять только к указателям на элементы одного массива (включая воображаемый элемент, располагающийся за последним элементом массива) или полям одного класса. В рамках этих требований, объекты, не являющиеся массивами, рассматриваются как массивы размера 1. В остальных случаях поведение не определено.
Комментариев нет:
Отправить комментарий