struct list* list_cons(int data_item, struct list* tail);
当我声明此结构时,“ list *”是什么意思,对于我认为使用大括号而不是大括号的结构?很抱歉,我尝试使用Google搜索,但是找不到任何内容。
答案 0 :(得分:2)
这是函数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
答案 1 :(得分:0)
这看起来像是从旧的C语言继承的代码,您必须声明所使用的类型是结构,除非明确地对其进行类型定义。
开头的const inventory = [
{
color: "white",
id: 1,
name: "pearls",
uses: [
"buy",
"craft",
"trade",
"sell"
],
weight: 0.1,
worth: 100
},
{
color: "white",
id: 2,
name: "pearls",
uses: [
"buy",
"craft",
"trade",
"sell"
],
weight: 0.1,
worth: 100
},
{
color: "brown",
id: 3,
name: "wood",
uses: [
"buy",
"craft",
"trade",
"sell"
],
weight: 2,
worth: 10
}
];
const net_worth = inventory.reduce(( a, b ) => a + b.worth, 0 );
console.log( `two pearls and one wood are worth ${ net_worth }` );
const oyster = {
color: "grey",
id: 4,
name: "oyster",
uses: [
"loot_pearls",
"open"
],
weight: 1,
worth: 6
};
console.log( `opening the oyster gave you ${ oyster.worth } pearls` );
是函数struct list*
返回的类型。在C ++中,您只需编写list_cons
。这两种语法都意味着该函数返回指向列表结构的指针。
函数中的参数也一样,第一个参数只是一个int,第二个参数是指向列表结构的指针。考虑到该变量名为tail,我希望它应该在列表的后面。
如果您还没有涵盖C ++中的指针,那么在理解之前,您必须先仔细研究一下。
否则,C中的list* list_cons
等同于C ++中的struct list*
。
答案 2 :(得分:0)
函数可以声明为:
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 和指向尾部的指针。它返回结构列表的指针类型。
答案 3 :(得分:0)
您正在 MERGING ,是一个列表结构的声明和一个指向列表的指针的声明。此函数接受两个int类型的参数和一个指向list类型的指针。对于这样声明的每个结构,不需要。