Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Оператор new [] и параметр функции


Автор: Duplet 22.9.2006, 08:23
Почему не работает??

void f(char *p)
{
      p = new char[20];
}

void main()
{
      char *t;
      f(t);
     // удаляем указатель
}

Автор: Kuvaldis 22.9.2006, 08:32
Duplet 
А не работает потому, что при передаче параметров в С/С++ передается КОПИЯ параметра. 
В теле функции ты копии выделил память, но при возвращении из функции значение указателя восстановилось старое.
выход
1. Передать указатель по ссылке (больше к С++) (если знаешь Паскаль - то это var)
 
Код

void f(char* &p)
{
      p = new char[20];
}


Классический вариант = передать указатель на указатель. В соответствии с идиомами языка С изменить можно только ту переменную, у которой ты знаешь ее адрес
 
Код

void f(char** p)
{
     *p = new char[20];
}




Автор: Duplet 22.9.2006, 08:53
Благодарствую

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)