#c #pointers #constants #lvalue
#c #указатели #константы #значение lvalue
Вопрос:
Рассмотрим следующее:
1) const char* const
Выше мы говорили, что существует постоянный указатель (т. Е. сам указатель не может быть изменен), указывающий на постоянный символ (т. Е. фактический символ, на который он указывает, является const)
Как насчет этого:
2) const char*amp;
В приведенном выше примере говорится, что это non-const
ссылка на значение, указывающая на const char*
, или это const
ссылка на значение, указывающая на char*
?
Как насчет этого:
3) const char* constamp;
non-const
ссылка на значение, указывающая на a const char* const
, const
ссылка на значение, указывающая на a char* const
, или const
ссылка на значение, указывающая на a const char*
?
Кто-нибудь объяснит, пожалуйста.
Комментарии:
1. У вас не может быть
const
ссылок на значения l, ссылки являются постоянными по своей природе. Путем исключения это дает ответ для каждого из объявлений.2. Хорошо, спасибо!
3. У ссылки нет
const
модификатора, отличного от типа, на который она ссылается. Второйconst
модификатор указателя означает, что вы не можете изменить, на какой объект он указывает, но это уже верно для ссылок. Утверждение типа «неконстантная ссылка на значение, указывающая наconst char* const
» не имеет смысла для C , потому что в нем есть все возможныеconst
, нет перспективы, с которой его можно было бы считать неконстантнымconst
.4. Теперь я это понимаю. Спасибо.
5. В языке C нет ссылок как функции. Этот языковой тег не подходит для этого вопроса.