概述
1.关于引用和指针
概念上,引用(&)并不是对象,而是一个已经存在的对象的别名;引用不可以重新绑定到另外一个对象,因此引用必须初始化。(类比const,一经定义就不能修改,所以必须初始化,是同样的道理。)
引用和指针都是实现了其他对象的间接访问。不同的是:指针本身就是一个对象,允许对指针进行赋值和拷贝;指针无需在定义时赋初值。
对于引用的概念,通过这段代码加深印象:
int ival=12; int *p=&ival; int &refval=ival; int *p1=&refval;
int &refval=ival;中的&是代表引用声明符号;而int *p1=&refval;的&则代表取地址。
如下图的watch中所示,可以看出p和p1这两个指针的值(所存放的地址值0x0039F1D8),以及这两个指针所指向的值(12)是完全一样的(其实有点废话,既然两个指针都是指向同一个地址,自然指向的值是一样的),也就是ival和它的引用refval是等价的。
注意:虽然指针p1初始化为&refval,而&refval和&ival这两个值是不一样的,也就是refval和ival是存放在内存中的不同地址上,但是int *p1=&refval这句初始化之后,p1指针上存的值其实并不是refval的地址,而是refval所引用的变量ival的地址。因此,这里就更明确了:引用的作用就相当于代言者,这个代言者所说所做的一切都代表了原始对象,与引用自身无关。
由于引用不是对象,所以不存在指向引用的指针。我想基本上这也上面那句int *p1=&refval之后,p1的值竟然是ival的地址的概念上的辅证。
但是存在指针的引用。
2.关于const
如果利用一个对象去初始化另外一个对象,则他们是否是const都无所谓。常量特性仅仅是用于限定其初始化之后不可修改。
如果想在多个文件中共享const对象,必须在变量的定义之前添加extern关键字。
3.C风格字符串
C风格字符串不是一种类型,而是为了表达和使用字符串而形成的一种约定俗成的写法,按此习惯书写的字符串存放在字符数组中并用空字符('