您的位置:首页 > 编程语言 > C语言/C++

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

2015-07-25 23:03 393 查看
    这篇博客,就写一些自己的浅显理解,和认识。

    位运算:&(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型的初衷是相违背的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: