@pshevnin

Как правильно использовать указатель?

Добрый день. У меня есть функция, которая принимает указатель. int next_edge(edge_t *out_edge)
Внутри функции я получаю ещё один указатель, который указывает на нужное мне значение. Как сделать так, чтобы возвращая return 0 или 1, я мог получить значение "полезного" указателя в программе, через указатель, который я принимаю в функцию? Спасибо.
  • Вопрос задан
  • 98 просмотров
Решения вопроса 1
@res2001
Developer, ex-admin
Когда вы передаете в функцию указатель на объект (на что угодно), это значит, что вы можете в функции изменять этот объект и все изменения будут видны вызывающему коду.
Если вам надо что бы вызывающий код увидел новый указатель, то передайте в функцию указатель на указатель:
int next_edge(edge_t **out_edge)
{
  edge_t * tmp = malloc(sizeof(edge_t));
  if(tmp)
  {
     *out_edge = tmp;
     return 1;
  }
  return 0;
}

Но обычно проще в таком случае возвращать указатель в возвращаемом значении. Вызывающий код может сравнить возвращенное значение с NULL для выяснения того вернула функция нормальный указатель или произошла ошибка. Так делает, например, функция malloc().
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы