[C++学习笔记]--位运算、引用、const指针

    这篇博客,就写一些自己的浅显理解,和认识。

    位运算:&(and运算)、 |(or运算)、~(not运算)、^(XOR异或运算,”相同为0,不同为1“)、>>(右移运算)、<<(左移运算)。 就这些运算了。前面的一些运算,学过数字电路或者别的课程应该都很清楚。在这里要特别指出左移运算和右移运算。

       左移:总的来说,左移运算,相当于乘法运算,只是乘以的是2的指数倍。比如,int i = 5 ; i <<2;//这相当将0101变为了0101[00 ] = 20Decimal,就是相当于 5乘以4,即power(2,2);那么要特别注意的是,左移的时候,右边是自动补零的。

       右移:和左移反着来,即相当于除法运算。要特别注意的时候,对于signed类型,如果是负数,那么每右移一位,自动的在左边最高位补1,如果是正数,那么自动在左边最高位补0.比如:signed short i = -5 ;1111  1111 1111 1011右移两位,1111 1111 1111 1110  [11] 。

       说一个异或有趣的应用:用来加密和解密。首先,我们来看看这么三个公式:a^b=c;那么c^b=a;c^a=b;如果,我们a是原文,那么b是密码本,我们可以生成c用于传输,最后接收到的人,用c和密码本进行异或,就能得到原文了。


   引用:什么是C++引用呢?先来看看定义,比如:int a; int &r = a;//这样就是r引用了a,也就是说,r是a的别名。我们要注意的是,一旦r是a的引用,那么r 不能作为别的变量的引用,哦,对了,不能对常量什么的引用,只能应用在变量上。那么为什么要用引用这个东西呢,等遇见具体的项目,再去查相关资料吧。


    const指针:const char* ptr; 也是说,你能通过ptr来修改其所指向的值,但是这个值本身是可以自己修改的。比如,ptr = &i; *ptr = 5;//非法 但是i = 5;//这是可以的。还有,非常常量指针是可以赋值给常量指针的,但是反之不行:const char* ptr1;char* ptr2;ptr1 = ptr2;//合法 ptr1 = ptr2;//非法。因为,我们定义const char* ptr也就是说,你能通过他来修改所指向的值,如果ptr1 = ptr2合法,那么我们可以通过ptr1来修改值的,这样和我们定义ptr为const型的初衷是相违背的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值