C ++中的结构格式[重复]

问题描述 投票:-2回答:4

这个问题在这里已有答案:

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

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

c++ structure
4个回答
0
投票

这看起来像是继承自优秀旧C的代码,您必须声明您正在使用的类型是结构,除非它明确地是typedef。

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

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

如果你没有用C ++中的指针覆盖,那么在理解这一点之前你必须先仔细研究一下。否则C中的struct list*相当于C ++中的list*


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

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和指向tail的指针。它返回struct list类型的指针。


0
投票

你正在混合列表结构的声明和指向列表的指针的声明。这个函数带有两个int类型的参数和一个指向类型list的指针。所以每个结构都不需要像这样声明。

© www.soinside.com 2019 - 2024. All rights reserved.