Здравствуйте, гость ( Вход | Регистрация )
|
AXELman4ever |
30.9.2011, 18:52
Сообщение
#1
|
|
Студент ![]() Группа: Участник Сообщений: 31 Регистрация: 22.9.2011 Пользователь №: 2902 Спасибо сказали: 0 раз(а) Репутация: 0
|
Имеется такая запись:
char *b = new char[10]; b[0] = '0'; b[1] = '1'; b[2] = '2'; ... Объясните пожалуйста, почему для записи значения в чар (как я понимаю, по указателю), не требуется его разыменовывать? Я так понимаю что для массивов любого типа всегда форма записи такая, но почему разыменование не требуется? да, кстати... и при удалении массива чаров delete[] b; я по прежнему могу обратиться к указателю и проверить доступность значений по индексу. А каков же смысл тогда delete[] ? |
|
|
|
![]() |
|
Mingun |
1.10.2011, 19:55
Сообщение
#2
|
|
Новичок Группа: Новичок Сообщений: 3 Регистрация: 28.9.2009 Пользователь №: 1122 Спасибо сказали: 0 раз(а) Репутация: 0
|
Указатель обнулять и вправду не обязательно. Всё будет работать и так. Однако обнуление указателя считается хорошим тоном, поскольку в таком случае вы схлопочете access violation при обращении по нулевому адресу. Что, согласитесь, значительно упрощает поиск проблемы, нежели внезапная неправильная работа программы в исключительных случаях (которых годами может не быть, но которые появляются в самый неподходящий момент
|
|
|
|
AXELman4ever Почему не требуется разыменовывать char 30.9.2011, 18:52
Алексей1153 AXELman4ever, оператор [] определён для указателя ... 30.9.2011, 21:19
AXELman4ever Цитата(Алексей1153 @ 30.9.2011, 21:19) чт... 1.10.2011, 0:27
Iron Bug Цитата(Алексей1153 @ 1.10.2011, 0:19) есл... 30.9.2011, 22:00
Litkevich Yuriy Цитата(AXELman4ever @ 30.9.2011, 21:52) я... 1.10.2011, 21:41
AXELman4ever Цитата(Litkevich Yuriy @ 1.10.2011, 21:41... 2.10.2011, 14:43
enslaver могу сказать то что
char b[10];
и
char *a... 3.10.2011, 7:58
Алексей1153 enslaver, в обоих случаях это указатель на начало ... 3.10.2011, 8:52![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 29.12.2025, 8:06 |