我对C编程很陌生。为我的班级做一个涉及链表的项目。我定义了一个名为node的结构,它代表一个节点,它有一个值,以及一个指向下一个节点的指针。
如果我希望方法的返回类型是节点类型,我必须说
struct node* method_name(){}
或者我只能说
node* method_name(){}
?
struct
是类型定义的一部分,所以是的,你必须写struct node* method_name(){}
由于这可能有点乏味,因此还可以使用typedef
关键字为您的类型设置别名。因此,如果您调用类型struct NODE
,则可以编写typedef struct NODE node
以使node
与struct NODE
相同,然后可以编写node* method_name(){}
这取决于您是否使用typedef
来定义结构。
如果你这样做:
struct node {
int value;
struct node *next;
};
那么是的,您必须将该方法声明为struct node *method_name(){}
但是,如果你像这样键入定义你的结构:
typedef struct node {
int value;
struct node *next;
} node;
然后,您可以将函数名称声明为node *method_name(){}
。
结构本身是类型struct node
,但typedef
允许您将结构称为struct node
或仅node
。
如果您使用的是typedef
例如:
typedef struct
{
/* your structure */
} Node;
您可以在不编写struct
的情况下使用Node
:
/* Declare node1 and node2 of type Node */
Node node1, node2;
Node * method_name(void);
返回"节点"结构的指针。 如果要返回节点(不是指针(,则必须编写代码:Node method_name(void);