梁越

c++ primer读书笔记

0 人看过

精读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;