| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Массив символов |
| Автор: Dray 13.1.2006, 17:40 | ||
Чем отличаются указатели p1 и p2? |
| Автор: Void 13.1.2006, 17:45 | ||||
Тем, что p1 - это не указатель, а массив определенного размера. Просто он, как и любой массив в C++ может быть неявно преобразован в указатель. И убедиться в этом очень просто:
|
| Автор: nikitao 13.1.2006, 17:59 |
| В том что char *p2 является константой,а p1 просто массив символов |
| Автор: blackofe 13.1.2006, 20:18 | ||||||
не понял. с какой радости p2 является константой? вот такой код компилер откомпилит, а программа выполнится и не поперхнется:
а если ты имеешь в виду, что нельзя писать вот так
то это не называется константой. и компилятор это опять же проглотит спокойно. другое дело, что в процессе выполнения ты получишь "access violation", но это уже другая история. |
| Автор: threef 13.1.2006, 21:07 | ||
Массив - константный указатель
|
| Автор: blackofe 13.1.2006, 22:15 | ||||||||
что-то я логики не нахожу. думаю, что это просто была описка. |
| Автор: Helicopterr 14.1.2006, 04:35 | ||
Нет не описка. Массив - это указатель - константа на адрес первого элемента. Оператор [] может и не использоваться. Например
Надеюсь теперь разница понятна. |
| Автор: threef 14.1.2006, 14:10 |
| blackofe Константа - это то, что не меняется в процессе работы программы. Константный указатель - это константа, содержащая адрес. Этот адрес не может меняться. Указатель на строку - это указатель на КОНСТАНТУ. Сам указатель может меняться, а вот строка - нет. Да пример-то попробуй! |
| Автор: blackofe 17.1.2006, 19:49 | ||
все верно. пардон. заблудился в терминах |
| Автор: blackofe 18.1.2006, 22:26 | ||||||
LuckLess, имеется в виду конкретный пример:
здесь "Hello, world!" - строковая константа, а p2 - указывает на нее. и
вызовет ошибку выполнения 'access violation', поскольку будет выполнена попытка записи в константную строку. более того, вот такой код
вызовет такую же ошибку. |