C++结构体前面为什么会经常使用typedef

C++代码中定义几个结构体,我们可能会看到这样的代码:

typedef struct student
{
	string name;
	int age;
	string gender;
}student;

为什么struct关键字后面有结构体名称student了,还需要用typedef再重新给定一个名字呢?

这是因为如果不使用typedef,即

struct student
{
	string name;
	int age;
	string gender;
};

在C语言中使用的时候,必须这样定义一个变量:

struct student stu1 = {"TheOne", 24, "male"};

所以在C语言中会使用typedef将struct student定义为student,这样我们使用student结构体的时候可以省略struct,即:

student stu1 = {"TheOne", 24, "male"};

但是在C++中,一切都变得简单了,我们不需要使用typedef,也可以直接使用student定义变量。即:

结构体:

struct student
{
	string name;
	int age;
	string gender;
};

变量定义:

student stu1 = {"TheOne", 24, "male"};

所以说C++中看到的typedef只是为了兼容C的写法。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏代码男人

我与Android过往,从此更需努力,揭开新的篇章。

       早就写篇关于自己从接触Android到现在的文章,怕是更多的心灵鸡汤,或者自己的侃侃而谈,今天,在南京工作的倒数第二天,提笔写来,希望能够结识更多...

11030
来自专栏程序员互动联盟

编程语言中,c#、Python、JavaScript哪一个更接近c语言?

不要尝试比较几种编程语言的优劣,任何一种编程语言都有其存在的价值,适合的就是最好的,现在编程领域Python,JAVA等等发展势头非常迅猛,但并不意味着所有的企...

37320
来自专栏石开之旅

小甲鱼《零基础学习Python》课后笔记(二):用Python设计第一个游戏

BIF(Built-in Functions)是Python的内置函数,为了方便程序员快速编写脚本程序。

34730
来自专栏老九学堂

入门编程,一定要从C语言开始吗?

很多小伙伴在入门编程时,都是从咱们老九学堂的C语言课程开始的,但最近有的小伙伴问我,学编程一定要从C语言开始吗?直接学习JAVA可以吗?

51230
来自专栏Nicky's blog

Java编写的C语言词法分析器

    这是java编写的C语言词法分析器,我也是参考很多代码,然后将核心代码整理起来,准备放在QQ空间和博客上,目的是互相学习借鉴,希望可以得到高手...

25020
来自专栏Golang语言社区

Golang学习笔记之错误处理error、panic (抛出错误),recover(捕获错误)

错误表示程序中出现了异常情况。Go 语言通过内置的错误接口提供了非常简单的错误处理机制。

21640
来自专栏用户2119464的专栏

字节跳动EE部门前端面试经历及总结

你好,我是星辉,幸会幸会。 今天下午我参加了字节跳动EE部门的前端视频第一次面试,把它记录总结下来,希望能够对大家带来帮助。

1.5K20
来自专栏老九学堂

最难学的十大编程语言 Java排第三 它竟是第一名!

编程语言是开发者们代码工作的核心,也是许多开发者最爱讨论的话题。编程语言的选择对开发者和工具制造商都十分重要,前者需要保持最新和具备市场潜力的技能,后者则亟需确...

44820
来自专栏linux驱动个人学习

高端内存映射之kmap_atomic固定映射--Linux内存管理(二十一)

linux高端内存中的临时内存区为固定内存区的一部分, 对于固定内存在linux内核中有下面描述

25240
来自专栏诸葛青云的专栏

C语言编程中的“堆”和“栈”七大不同之处

对于编程初学者来说会接触到一些难以理解的名称,比如堆(heap)、栈(stack)、堆栈(stack)等。初学开发过程中往往让人混淆不清。今天我们来谈谈堆和栈的...

20420

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励