C/C++ 结构体struct 知识点汇总

文章讲述了在C语言和C++中定义和使用结构体指针的差异,以及typedef在为结构体类型创建别名时的作用。在C语言中,struct关键字是必需的,而C++允许更简洁的语法。typedef使得可以使用LinkNode这样的别名来定义结构体变量,简化了代码。在C语言中,定义结构体变量时仍需使用struct关键字,但在C++中则不需要。
摘要由CSDN通过智能技术生成

以链表为例:
知识点1
C语言:

struct Node {
    int data;
    struct Node* next;//必须加struct
};

C++:

struct Node {
    int data;
    Node* next;
};

在C语言中,当定义一个结构体内部的指针类型时,使用struct关键字来指定指针的类型是必需的。这是因为在C语言中,编译器需要知道指针指向的是一个结构体,而不是一个普通的数据类型。因此,在struct Node内部的指针类型声明中,需要使用struct关键字来指定指针所指向的类型。
在C++语言中,结构体的定义不需要使用struct关键字来引用结构体内部的类型。这是因为C++对结构体进行了一些扩展,使得结构体内部的类型可以直接使用,无需添加额外的关键字。但是,在C语言中,必须使用struct关键字来引用结构体内部的类型。

知识点2 typedef的使用
typedef是给已知的类型起别名,包括内置类型和自定义的数据类型如struct。
在C语言中,

struct Node {
    int data;
    struct Node* next;//必须加struct
};

struct和Node一起写才表示一个结构体类型,因此使用“Node 变量名”是不正确的,要使用“struct Node 变量名”才正确。因此我们便能理解typedef在struct中的使用方法:

typedef struct Node {
    int data;
    struct Node* next;//必须加struct
}LinkNode;

这里完成了两件事,一个是定义了一个结构体类型;一个是完成了以下操作typedef struct Node LinkNode;因此之后就可以只使用LinkNode 变量名定义结构体变量。

而在C++中,
可以直接使用“Node 变量名”定义变量,而不需要在变量名前添加struct关键字。这是因为C++对结构体进行了一些扩展,允许直接使用结构体名作为类型。

C语言中可以选择不使用typedef,则定义变量时格式为

struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值