Добрый день
Пучему когдя я вызываю функцию и передаю ей указатель в ней всё нормально работает, но при выходе htDat принимает прежнее значение ("")?
А когда она не определёна (тобишь орпеделяется как char* htDat

то компилятор выдаёт ошибку
Run-Time Check Failure #3 — The variable 'htDat' is being used without being defined.
Какая ему разница определена она или нет? Ведь память под эту переменную выделяется внутри фенкции.
void fn1(char *qqq)
{
qqq = new char[10];
strcpy(qqq, "qqqqqq");
}
int main(int argc, char* argv[])
{
char *htDat;
fn1(htDat);
return 0;
}
Во общем суть проблемы ясна: внутри функции значение указателя который её передаётся возвращается в прежнее положение после выхода из нею.
Спасибо!
Здравствуйте, Аноним, Вы писали:
А>Какая ему разница определена она или нет? Ведь память под эту переменную выделяется внутри фенкции.
Сумбурно как-то
А>void fn1(char **qqq) // Две звездочки надо
А>{
А> qqq = new char[10];
А> strcpy(qqq, "qqqqqq");
А>}
Здравствуйте, Нахлобуч, Вы писали:
Н>Здравствуйте, Аноним, Вы писали:
А>>Какая ему разница определена она или нет? Ведь память под эту переменную выделяется внутри фенкции.
Н>Сумбурно как-то
Н>А>>void fn1(char **qqq) // Две звездочки надо
А>>{
А>> *qqq = new char[10]; // Ну и здесь разыменование добавить забыл :)
А>> strcpy(*qqq, "qqqqqq");
А>>}
Н>
Здравствуйте, Нахлобуч, Вы писали:
Н>Здравствуйте, Аноним, Вы писали:
А>>Какая ему разница определена она или нет? Ведь память под эту переменную выделяется внутри фенкции.
Н>Сумбурно как-то
Н>А>>void fn1(char **qqq) // Две звездочки надо
А>>{
А>> qqq = new char[10];
А>> strcpy(qqq, "qqqqqq");
А>>}
Н>
а можно и так, тогда разыменовывать не придется
void fn1( char* & qqq ) {
qqq = new char[10];
strcpy(qqq, "qqqqqq");
}
int main(int argc, char* argv[])
{
char *htDat;
fn1(htDat);
return 0;
}