Передача указателя в функцию, присвоение адреса переменной и возврат - 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;
}

Объяснение кода листинга программы

  1. Объявляется структура TStructParam и переменная g_Prm типа TStructParam.
  2. Функция GetParam принимает указатель на указатель на структуру TStructParam.
  3. Внутри функции GetParam указатель на переменную g_Prm передается в функцию apPtr.
  4. Указатель на переменную g_Prm присваивается значению указателя на переменную tCurPrm.
  5. Вызывается функция GetParam и передается указатель на переменную tCurPrm.
  6. В функции main возвращается 1.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.571 из 5
Похожие ответы