C++中的结构格式化

Structure formatting in C++

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

当我声明这个结构时,"list*" 是什么意思,对于我认为我使用大括号而不是方括号的结构?很抱歉这个问题,我试着用谷歌搜索,但我找不到任何东西。

这是函数 list_const 的函数声明,它接受两个参数,一个整数 data_item 和一个名为 tail 的指针,该指针指向 [=14= 类型的对象].该函数的 return 值再次是指向类型 list 的对象的指针。您也可以将此代码段重写为

struct list; // forward-declare the type

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

这看起来像是从良好的旧 C 继承的代码,您必须声明您使用的类型是一个结构,除非它是明确的 typedef'd。

开头的struct list*是函数list_cons返回的类型。在 C++ 中,您只需编写 list* list_cons。这里的两种语法都意味着函数 returns 指向列表结构的指针。

函数中的参数也是如此,第一个参数只是一个int,第二个参数是一个指向列表结构的指针。考虑到变量名为tail,我希望它应该在列表的后面。

如果您没有学习过 C++ 中的指针,那么在理解它之前,您必须先仔细研究一下。 否则 C 中的 struct list* 等同于 C++ 中的 list*

函数可以声明为:

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指向尾部的指针.它returns一个struct list类型的指针。

你正在MERGING列表结构的声明和指向list.This函数的指针的声明采用两个int类型的参数和一个指针键入 list.So 不需要 每个结构都这样声明。