![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Duplet |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 18.9.2006 Репутация: нет Всего: нет |
Почему не работает??
void f(char *p) { p = new char[20]; } void main() { char *t; f(t); // удаляем указатель } |
|||
|
||||
Kuvaldis |
|
||||
![]() механик-вредитель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1189 Регистрация: 16.6.2006 Где: Минск Репутация: 11 Всего: 61 |
Duplet
А не работает потому, что при передаче параметров в С/С++ передается КОПИЯ параметра. В теле функции ты копии выделил память, но при возвращении из функции значение указателя восстановилось старое. выход 1. Передать указатель по ссылке (больше к С++) (если знаешь Паскаль - то это var)
Классический вариант = передать указатель на указатель. В соответствии с идиомами языка С изменить можно только ту переменную, у которой ты знаешь ее адрес
Это сообщение отредактировал(а) Kuvaldis - 22.9.2006, 08:35 -------------------- Помни - когда ты спишь, враг не дремлет Спи чаще и дольше, изматывай врага бессоницей |
||||
|
|||||
Duplet |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 18.9.2006 Репутация: нет Всего: нет |
Благодарствую
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |