Передача указателя в функцию, присвоение адреса переменной и возврат - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Добрый день, подскажите, почему в отладке в функции указателю адрес переменной присваивается корректно, но при возврате указатель смотрит по прежнему адресу (здесь на NULL, скажем). необходимо получить адрес структуры g_Prm. Возврат return-ом не интересует. Именно такая конструкция. Или необходимо использовать указатель на указатель?
Листинг программы
  1. TStructParam g_Prm;
  2. void GetParam (TStructParam *apPtr)
  3. {
  4. apPtr = &g_Ptr;
  5. }
  6. int main ()
  7. {
  8. TStructParam *tCurPrm = NULL;
  9. GetParam (tCurPrm);
  10. return 1;
  11. }

Решение задачи: «Передача указателя в функцию, присвоение адреса переменной и возврат»

textual
Листинг программы
  1. TStructParam  g_Prm;
  2.  
  3. void GetParam (TStructParam   **apPtr)
  4. {
  5.    *apPtr = &g_Ptr;
  6. }
  7.  
  8. int main ()
  9. {
  10.   TStructParam *tCurPrm = NULL;
  11.  
  12.   GetParam (&tCurPrm);
  13.   return 1;
  14. }

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

  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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы