У меня есть указатель на структуру. Я вызываю подпрограмму, которая определяет, нужна ли мне эта структура, и выделяет для нее место с помощью malloc, возвращая указатель на эту область или ноль, если не используется.
struct node *node_p;
node_p = need_this();
Это работает, и я могу правильно получить доступ ко всем элементам структуры. Одним из элементов узла структуры является * next, который указывает на структуру следующего узла и указатель на строку, но он возвращает указатель на строку, которой даже нет в этой подпрограмме.
node_p=find_string(node_p->next,"string");
Однако это возвращает указатель в структуре на правильную строку.
struct node *node_p, *node_copy;
node_copy=find_string(node_p->next,"string");
Единственное отличие заключается в использовании второго указателя вместо оригинала. Я что-то здесь не так делаю или это должно быть глубже в вызываемой функции? Проблема с обвинением вызываемой функции в том, что я использую ее несколько раз в течение нескольких месяцев без проблем, однако другие вызовы только ищут строку и никогда не переходят к «следующему».
EDIT: Дальнейшая отладка показала, что проблема на самом деле заключается в том, что указатель передается в find_string, а не в возвращаемый указатель. Это меняет вопрос и проблему, поэтому мне нужно открыть другой вопрос.