@Gys

Как сравнить указатели?

Есть код
мне нужно сравнить указатели num и endptr, а именно получить что-то вроде этого
num + strlen(num) == *endptr
Но когда я пытаюсь получить значение указателя в виде числа, программа падает. Причем работает странно.
В коде я присваиваю значение указателя endptr переменной k. И потом вывожу это значение. И оно работает.
Однако, если я пытаюсь сравнить значение k, казалось бы независимое, с каким-то другим числом (этот иф), то программа падает.
Я не понимаю, почему.
Как мне в итоге сравнить указатели?
  • Вопрос задан
  • 135 просмотров
Решения вопроса 1
gbg
@gbg
Любые ответы на любые вопросы
Надо было привести проблемный код прямо в вопросе

Проблема натурально вот тут:
char ** endptr;
long a = strtol(num, endptr,  10);


Исправление:
char * endptr;
long a = strtol(num, &endptr,  10);


Потому что strtol ждет указатель на место, куда надо записать указатель, а не указатель вникуда, как вы написали. Передача же указателя вникуда приводит к UB - и программа падает даже не в том месте, где реально находится ошибка.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы