最近这几天,书的毛 都没碰…沉迷于小说的世界无法自拔,虽然我们都不是作者笔下小说中的主角,但是我们可以做自己生活的主角,我始终相信着自己是自己的主角,无论情况再差,现实再残忍.
6.1内存和地址
<1>一个’字’通常包含四个(或两个字节),每个字节包含八个位,每个位存放0或者1,这样一个字就可以表示02^32-1(无符号整形),或-2^32-12^32-1.
<2>我们定义的变量的名称和里面储存的数值的对应关系是由编译器决定的,不是硬件.但是硬件还是通过地址访问内存位置
6.2值和类型
<1>不可以简单的通过检查一个值的位来判断它的类型,这取决于编译器的解释指令,若是解释为整形算术指令,就是整形,若是解释为浮点型算术指令,就算是浮点数类型.
6.3指针变量的内容
指针变量的内容存的是地址,通过访问地址来访问它指向的内容
int p=10;
int *a=p;
cout<<*a;
6.4间接访问操作符
'*a’这种东西是通过一个指针a来访问a所指向的内容,a本身存放着所指向变量的地址
6.5未初始化和非法的指针
int *a;
…
*a=12;
那么a到底指向了哪里呢?,如果运气好,编译器会报错,否则可能会导致很严重的后果,比如,万一指针指向了一个你已经创建的变量怎么办?你在debug的时候可能会 心态炸裂 极度难受~~~
6.6NULL指针
标准的NULL指针,不指向任何东西,要是一个指针为NULL,你可以赋值为0,比如
int *a=NULL;
和
int a=0;
这两个语句等价
如果你访问a的话,一般会出错,更重要的是,不要访问NULL!!!
不论如何,所有指针变量的初始化都应该自己来写,为了程序一遍通关,怎么可以偷懒呢?!
6.7指针.间接访问.左值