c++ primer读书笔记
精读c++ primer5
关于int的范围计算
int一般是4个字节,一共是32个位,因为有一位是符号位,所以是最大值为2^31
对于负数,应该也是-2^31次方,但是实际是-2^31-1因为负数有两种方式表示0
一种是:
10000000 00000000 00000000 00000000
另一种是:
00000000 00000000 00000000 00000000
那这时候第一种表示方式用于表示-2^32这个数值
关于指针和引用占用空间引发的思考
在概念上,我们知道,引用是一个变量的别名,指针是一个新的变量,指向地址;并且引用不占空间,指针占4个字节
但是我们想想,这里说的不占空间是真的不占内存码,明显不是的,引用其实保存的也是一个地址,所以引用和指针所占空间都为4个字节,这里所谓的不占内存只是一个抽象的说法,不用新建一个变量来存储这个值,不是值拷贝,这可能是对程序员的一个谎言。
而且在查阅很多博客之后,我发现其实引用的本质就是一个指针,常量指针,指向固定,而且必须初始化,这就是引用和指针的区别
const引用常量
int i=0;
const int &a=i; #修改a不会修改i
int &b=i; #修改b会修改i
这里的引用值a修改了,并不会影响i的值,因为编译器实际做了以下事情
const int temp=i;
const int &a=temp;