Форматирование структуры в c++

struct list* list_cons(int data_item, struct list* tail);

Что означает «список *», когда я объявляю эту структуру, и для структур я думал, что использую фигурные скобки вместо скобок? Извините за этот вопрос, я попытался погуглить, но ничего не нашел.

list_cons - это функция, struct list* - это возвращаемый тип, указатель на вашу структуру.
mch 10.09.2018 09:52

вы уверены, что это C++, а не C?

Daan Timmer 10.09.2018 09:54
2
2
225
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Это объявление функции для функции list_const, которая принимает два параметра, целое число data_item и указатель с именем tail, который указывает на объект типа list. Возвращаемое значение этой функции снова является указателем на объект типа list. Вы также можете переписать этот фрагмент на

struct list; // forward-declare the type

list* list_cons(int data_item, list* tail);  // declare function without 'struct' keyword

о, теперь я понимаю, спасибо!

jake stan 10.09.2018 09:56
Ответ принят как подходящий

Это похоже на код, унаследованный от старого доброго C, где вы должны указать, что тип, который вы используете, является структурой, если только он не определен явно.

struct list* в начале - это тип, возвращаемый функцией list_cons. В C++ вы бы просто написали list* list_cons. Любой из этих синтаксисов означает, что функция возвращает указатель на структуру списка.

То же самое касается параметров в функции, первый параметр - это просто int, второй параметр - указатель на структуру списка. Учитывая, что переменная называется tail, я ожидал, что она должна быть в конце списка.

Если вы не рассмотрели указатели в C++, вам придется сначала хорошенько изучить это, прежде чем понять это. В противном случае struct list* в C эквивалентен list* в C++.

Функцию можно объявить как:

return_type func_name(arg1, arg2)

struct list* list_cons(int data_item, struct list* tail);

> return_type ---> struct list*
func_name ----> list_cons
arg1 -----> int data_item
arg2 ---------> struct list* tail

По сути, struct list* list_cons(int data_item, struct list* tail); - это объявление функции, которое принимает два аргумента: data_item и указатель на хвост. Это типа возвращает указатель на список структур.

Вы - СЛИЯНИЕ, объявление структуры списка и объявление указателя, который указывает на список. Эта функция принимает два аргумента типа int и указатель на тип list. Таким образом, не требуется для каждой структуры, которая должна быть объявлена ​​таким образом.

Другие вопросы по теме