Как вернуть структуру?

#c

#c

Вопрос:

У меня возникли трудности с правильным определением возвращаемого типа в сигнатуре метода. Проблема в том
list* GetPrimeNumbers()

 struct dynamicArray{
   int val;
   struct dynamicArray * next;
};

typedef struct dynamicArray list;

int PrimeFactor()
{
    int sum = 0;
    list * primeNumbers;
    primeNumbers = GetPrimeNumbers();
    return sum;
}

list* GetPrimeNumbers()
{
    int max = 100;

    list * current, * head;
    head = NULL;

    for(int i = 2; i < max; i  )
    {
     //..implmenetation
    }    
    return current;
}
  

Я перепробовал несколько возвращаемых типов, но ничего не сработало. Я программист на C начального уровня. Что там должно быть?

Комментарии:

1. Динамический массив и связанный список — это две совершенно разные вещи.

2. Я не думаю, что что-то не так с опубликованным вами кодом ( current имеет тип list* ). Что-то может быть не так в части реализации. Кстати, что это за сообщение об ошибке?

3. Что вы подразумеваете под «не сработало»? Что пошло не так?

4. нам довольно сложно помочь, когда вы пропустили часть кода, которая фактически назначена current!

5. Кажется, имеет гораздо больше смысла возвращать GetPrimeNumbers head вместо current . Конечно, это зависит от реализации, которую вы упустили. Кроме того, PrimeFactor() всегда будет возвращать 0.

Ответ №1:

Либо вам нужен заголовочный файл с typedef и прототипом для GetPrimeNumbers , либо вам нужно поменять местами функции GetPrimeNumbers и PrimeFactor в файле.

То, как вы представили код, GetPrimeNumbers не имеет объявления при PrimeFactor компиляции.

Комментарии:

1. 1 — Да, смена порядка исправила это. Потребуется некоторое привыкание к этому языку, я не использовал его годами.