@pshevnin

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

Добрый день. У меня есть функция, которая принимает указатель. int next_edge(edge_t *out_edge)
Внутри функции я получаю ещё один указатель, который указывает на нужное мне значение. Как сделать так, чтобы возвращая return 0 или 1, я мог получить значение "полезного" указателя в программе, через указатель, который я принимаю в функцию? Спасибо.
  • Вопрос задан
  • 93 просмотра
Решения вопроса 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().
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы