Здравствуйте, гость ( Вход | Регистрация )
|
rp80 |
4.11.2011, 0:12
Сообщение
#1
|
|
Студент ![]() Группа: Участник Сообщений: 36 Регистрация: 10.9.2011 Пользователь №: 2860 Спасибо сказали: 0 раз(а) Репутация: 0
|
Есть такой код.
2 вопроса: 1. Правильны ли следующие рассуждения относительно первых двух объявлений str_copy? В первом случае указатель объявлен, но еще не инициализирован, т.е. фактически никуда не указывает ещё, поэтому и обращения к нему некорректны. Во втором случае str_copy объявлена как строковый литерал, т.е. как const char[2] и во-первых изменять значения такого массива нельзя, а во-вторых указатель выходит за рамки массива после 2. 2. Почему работает последний вариант? Ведь по идее надо бы выделить память следующим образом char* str_copy=new char[strlen(str)]; Спасибо. |
|
|
|
![]() |
|
Алексей1153 |
4.11.2011, 12:17
Сообщение
#2
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2946 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34
|
rp80, ну что ж, успехов )
Цитата char* str_copy=new char[1] - не константа далеко. И терминатор в этой строке не нужен, потому что в нее копируем а не из нее. это не константа, я не про эту строку говорил а вот нечитаемое это безобразие Цитата while(*p++=*q++); надлежит заменять на человеческий код
Сообщение отредактировал Алексей1153 - 4.11.2011, 18:56 |
|
|
|
rp80 копирование C строк 4.11.2011, 0:12
Алексей1153 rp80, это не код, это полный пииип )))
а зачем во... 4.11.2011, 9:46
rp80 Цитата(Алексей1153 @ 4.11.2011, 10:46) rp... 4.11.2011, 9:55
BRE В первом случае указатель не инициализирован и мож... 4.11.2011, 10:10
rp80 И ещё пара вопросов тут напишу, чтоб темы не плоди... 4.11.2011, 21:06
BRE Цитата(Алексей1153 @ 4.11.2011, 13:17) а ... 4.11.2011, 21:23
Алексей1153 BRE, неважно, что там два прохода. Зато читаемость... 4.11.2011, 21:50
BRE Цитата(Алексей1153 @ 4.11.2011, 22:50) BR... 4.11.2011, 21:55
Алексей1153 читаемость конечно лучше. И ещё лучше, если замени... 4.11.2011, 21:59
Iron Bug Цитата(Алексей1153 @ 5.11.2011, 0:59) пре... 4.11.2011, 22:57
Алексей1153 Iron Bug, когда я использую контейнеры, strlen не ... 5.11.2011, 12:17![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 14.12.2025, 13:25 |