[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型的初衷是相违背的。
位运算:&(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型的初衷是相违背的。
相关文章推荐
- C语言判断用户输入的是字符还是数字
- c语言while,switch语句常用代码
- C语言goto语句
- C++用指针访问private 成员
- C++学习笔记——类和对象(一)
- C++内存管理(可以参考C++与C#区别文章的后面部分)
- iOS开发分分钟搞定C语言 —— 流程控制
- 黑马程序员------C语言基础 预处理指令、文件操作及其他
- API之FindWindowEx和SendMessage
- C语言中让人头痛的指针和内存
- C++ 继承与接口 知识点 小结(二)
- C++ 虚函数与纯虚函数 浅析
- C++指针
- c语言二维数组与指针
- 实用程序软件包(关于使用静态函数报错问题“Static function declared but not defined in C+++ "eh.h is only for C++!"报错问题)
- C++ 打印矩阵
- UVa247 Floyd判断可达 深搜求环
- 黑马程序员----- c语言结构体
- c语言常用代码积累
- PAT (Basic Level) Practise (中文)1040. 有几个PAT(25) C语言