先写引用,声明今天网上补上。
c++书里说的很好,引用就是给对象新起了一个名字;
举例说明:
int ival=1024;
int &refval1=ival; refval1指向ival(是ival的另一个名字)
int &refval2; 此时会报错,因为当使用引用的时候,他的意思就是绑定到一个之前定义过的对象;
也就是给之前的对象起了一个新的名字,所以这里必须给引用一个初始值(即对象)
int &refval2=10; 切记引用必须是和对象绑定在一起,初始值必须是个对象,而不能是一个值;
refval1=6; 当你对 refval1改变值,则引用的初始对象的值也被你改变,其实你赋得值就是给ival赋得;
int fqal;
如果ival的引用是refval1,那么在执行int &refval1=fqal;
就重定义了refvalde1引用得对象了;
指针
1,指针本身就是一个对象,允许对指针赋值和拷贝。而且指针的生命周期内,可以指向不同的对象,而引用只能指向
一个对象
2,指针无须在定义时赋初值,如果指针没有初始化,则将拥有一个不确定的值。指针的存储单元里面存的是地址!
int t ;
int &t1 = t;
int *p;
p = &t1; //因为t1就是t的别名,所以是一样的。
p = &t; //此时这个&符号,并不是引用,而是取地址。
一个地址里面含有一个存储单元;
比如 int t=8; t这个对象,就有一片内存,而这个内存就是一个地址,这个地址里面有一个存储单元,里面存了8;
int *p=&t; 则p存的是t的地址,显然*p(相当于取p这个地址里的存储单元8);