关于typedef和&的一点分享

来说一说typedef 和&

作为懒人,typedef这个东西一定要会用,具体来说怎么偷懒呢?

第一个缩短代码长度,看个例子:

很长,这样写肯定不是一个懒人喜欢做的,如果使用了typedef 就可以变成这个样子:

确(三声)实很明显,那就直接说说这神器是干啥的以及怎么用

通俗来说,这东西就是给一种变量类型重新起一个名字

int a;这是定义了一个整形变量,对吧?我们先不考虑某些服务员可能会送错之类的问题

typedef int a;这样写,我们就是给小int 同学重新起了一个名字,这个名字就是a

以后我们在用int的时候,就可以直接用a

假设我要定义个整形变量,变量名是b

我可以写int b;同时我也可以写a b;

下面来说一说怎么用(敲黑板,划重点),想给什么类型起新名字,我就定义个该类型的变量

还是上面的例子,我想给int 取个新名字叫a,我首先int a;

然后在前面加上typedef ,就大功告成

稍微特殊一点的是指针类型,但是也不难,比如所我给int *起名字叫ab

那么就是typedef int * ab;这时候int*p;等效于ab p;

typedef 变量类型原来的名字 变量类型的新名字;

 在这里,list 等效于struct node *                      lnode 等效于struct node

也就有了我们开头举得那个例子

第二种就是减少代码的替换量,比如说一开始要对int变量类型的单链表,结果所有函数都写完了,但是发现由于自己眼瞎,题目中说的其实是char变量类型的,憨熊就要重新写了或者手动一个一个把int换成char,聪明一点的ctrl f全局替换,但是我们如果一开始给链表变量类型起一个新名字,那么问题就迎刃而解了,就像上面的dtype data;

提前写typedef int dtype;要改成char类型的链表,那么我们只需要把这里的int换成char即可

下面来说&,与运算是它,取地址也是它,它还有一种用处叫引用

引用这东西也可以说是起新名字,不过是给变量取新名字

我们都知道,一个人今天叫张三,明天改了一个名字叫李四,但是人还是同一个人

同理,我们只是给变量取了一个新名字,但是内存空间是同一块

举个例子,int a = 5;  int &b = a;

请你大声告诉我,b等于几,当然我们还是不考虑服务员会送错的问题

b肯定是5,在这里b就是a,a就是b

变量类型 &变量的新名字 = 变量原来的名字;

那么问题来了,这玩意有什么用,我们还是举栗子,给你两个int类型的变量,让你写一个函数去交换他们的值,怎么写?

蠢蛋这样写:

 

如果刚好你也这样想,那么恭喜你喜提一个新名字“蠢蛋

这时候某些同学说了用指针,没错指针可以解决,但是我们上面说的& 同样也是可以实现的

 由于这里是自定义函数,形参名其实可以和实参名一样,于是

 

那么这东西有啥用呢,我们最近其实已经用到了,细心同学发现链表的很多函数当中有的加了&,有的则没有加,现在想一想,应该就能想通了,具体要看我们需不需要对实参进行实质性的修改,像是插入,删除节点,或者修改某个节点的值,以及3.31作业题第一题反转链表那么我们就是需要加&的,但是也有像对于链表进行打印,或者在链表中查找是不是具有某种属性的节点,我们就是不需要加&的。

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值