#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 — Да, смена порядка исправила это. Потребуется некоторое привыкание к этому языку, я не использовал его годами.