为了账号安全,请及时绑定邮箱和手机立即绑定

关于下面的问题,c++ primer 不明白的地方?

关于下面的问题,c++ primer 不明白的地方?

C++ C
红糖糍粑 2022-05-13 19:11:52
书上说:typedef通常被用于三种目的:1、为了隐藏特定类型的实现,强调使用类型的目的。2、简化复杂的类型定义,使其容易理解。3、允许一种类型用于多个目的,同时使得每次使用该类型的目的明确。上面这段话怎么理解。能不能举个例子,说明一下。
查看完整描述

2 回答

?
米脂

TA贡献1836条经验 获得超3个赞

说说我的理解,因为前几天老是看头文件,这个在头文件里出现的次数相当多。
typedef的基本作用就是给一个数据类型一个名字,可以用这个名字去定义这样的数据类型。
比如 typedef uint unsigned int 就是用uint来表示无符号整数unsigned int,这样的用法在单片机程序里相当典型。这样可以简化书写,另外如果封装库文件的话,就可以隐藏数据类型。在比如定义一个结构 typedef Student struct { char name[10]; int Number;}Student;这样就可以用Student boy1;这样看起来只是简化了书写,和让定义看起来明确一些。可是当你想用一个结构里面还有结构型数据的话,比如已经定义了Student那么在定义一个Teacher :typedef Teacher struct { char name[10]; int Number;}Teacher;
那么就可以使用新的结构:struct { Student student; Teacher teacher;} Class;这样你看班级Class里就定义了学生和老师,而且使结构很清晰,很容易理解。
至于第三条,最常用就是int的定义了,比如我定义宽和高都是整数,typedef Width int;typedef Heigth int;
这样Width a;Heigth b;你一看就知道a,b是干什么的了,都是整型数,但是这么定义一下,你就很明白的知道使用整型数的目的了。

查看完整回答
反对 回复 2022-05-16
?
眼眸繁星

TA贡献1873条经验 获得超9个赞

AdjMatrix 定义了的是一个二维数组:如 AdjMatrix a; ====== int a[MAX_ VERTEX _ NUM][MAX_ VERTEX _ NUM]
而用AdjMatrix[MAX_ VERTEX _ NUM][MAX _ VERTEX _ NUM]去定义时会报错,所以只能用AdjMatrix
去定义,而且定义后的是一个二维数组,很特殊,呵呵,这个我以前都不知道

查看完整回答
反对 回复 2022-05-16
  • 2 回答
  • 0 关注
  • 119 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信