Передача указателя в функцию, присвоение адреса переменной и возврат - C (СИ)
Формулировка задачи:
Добрый день, подскажите, почему в отладке в функции указателю адрес переменной присваивается корректно, но при возврате указатель смотрит по прежнему адресу (здесь на NULL, скажем). необходимо получить адрес структуры g_Prm. Возврат return-ом не интересует. Именно такая конструкция. Или необходимо использовать указатель на указатель?
TStructParam g_Prm;
void GetParam (TStructParam *apPtr)
{
apPtr = &g_Ptr;
}
int main ()
{
TStructParam *tCurPrm = NULL;
GetParam (tCurPrm);
return 1;
}Решение задачи: «Передача указателя в функцию, присвоение адреса переменной и возврат»
textual
Листинг программы
TStructParam g_Prm;
void GetParam (TStructParam **apPtr)
{
*apPtr = &g_Ptr;
}
int main ()
{
TStructParam *tCurPrm = NULL;
GetParam (&tCurPrm);
return 1;
}
Объяснение кода листинга программы
- Объявляется структура TStructParam и переменная g_Prm типа TStructParam.
- Функция GetParam принимает указатель на указатель на структуру TStructParam.
- Внутри функции GetParam указатель на переменную g_Prm передается в функцию apPtr.
- Указатель на переменную g_Prm присваивается значению указателя на переменную tCurPrm.
- Вызывается функция GetParam и передается указатель на переменную tCurPrm.
- В функции main возвращается 1.