Почему указатель равен NULL?

Рейтинг: 1Ответов: 2Опубликовано: 03.06.2011

Видимо ответ крайне прост, но...

Есть файлы 1.cpp и 2.cpp, в файле 1.cpp:

void Fun(){  
  double *Arr;  
  Arr=NULL;  
  GetTable(Arr);   
}

в файле 2.cpp:

double * GlobalTable=new double[10];  
void GetTable(double * Table){  
Table=new double[10];  
    CopyMemory(Table,GlobalTable,10*sizeof(double));  
}

В итоге вызова ф-ции GetTable(), указатель Arr всё равно равен NULL! ПОЧЕМУ!?

Ответы

▲ 5Принят

Передавать надо не указатель, а указатель-на-указатель.

void Fun()
{  
  double *Arr;  
  Arr=NULL;  
  GetTable(&Arr);   
}

double * GlobalTable=new double[10];  
void GetTable(double ** Table)
{  
    *Table=new double[10];  
    CopyMemory(*Table,GlobalTable,10*sizeof(double));  
}
▲ 2
void GetTable(double *& Table)
{  
    Table=new double[10];  
    CopyMemory(Table,GlobalTable,10*sizeof(double));  
}

также можно передавать не по значению а по ссылке, указывая & в параметре функции