引用是已定义变量的别名.
C++引入引用变量的主要用途是用于函数的形参和函数的返回值。
使用引用参数:
1.当需要修改调用函数中的数据对象。
2.传递引用而不是整个数据对象,可以提高效率。
引用和指针的区别:
相同点
都是地址的概念,指针指向一块内存,内容就是指向内存的地址,而引用就是一块内存的地址.
不同点
1.引用仅是一个别名(不需要分配内存),而指针是一个实体(需要分配内存).
2.引用定义时必须初始化,且以后不可以改变,而指针不需要。
3.引用不可以为空(NULL),而指针可以为空.
4.引用不可是const类型的,而指针可以是,且const类型的指针和引用更相似.
5.引用无需解引用(*),而指针需要.
6.sizeof(引用)的值是所指向变量的大小,而sizeof(指针)的值是指针的大小(32位)是4.
7.引用和指针的自增(++)和自减(--)的含义不同.
引用没有指针灵活啊,一旦引用被绑定在一个对象上就不能够改变了,不可以再变成别的对象的引用,但是指针可以
,指针指向的地址可以任意更改,除了在常量区。
引用是别名,假设王小明字狗蛋;那么王小明是变量本身,狗蛋就是引用;给狗蛋100块和给王小明100块
本质上没有区别。同样,如果不小心干掉了狗蛋,王小明也完了。
指针不是王小明,但可以给王小明一个标签,上面写着“王小明”三个字,那个标签就是指针;你完全可以
把标签扔进茅坑,但王小明仍然是狗蛋。
-----------------------------------------------------------
6.1.4 对象数组
--------------------------
动态创建对象数组 page 180
--------------------------
6.4 字符串
(1)在C语言中用字符数组存放字符串,C++可以沿用此方法。
a. 如果在给字符数组赋值时在末尾放置'/0',便构成了C++字符串。给字符数组直接赋字符串常量,这时末尾的'/0'是隐含的。下面3条语句等价。
char str[8] = {'t','e','s','t','/0'};
char str[8] = "test";
char str[] = "test";
b. 用字符数组存放字符串也可以对字符串进行整体输入输出。
(2)用String类
----------------------------------
表达式的副作用:
第一种
int a[10];
i = 0 ;
a[i]=i++;
=号左边需要进行一次计算,右边需要一次计算并且对i赋值。
这个时候问题来了,究竟是先a[i]还是i++;呢。这是一个不确定的问题,标准没有规定顺序,属于编译器自由发挥。先计算a[i]也可能先计算i++所以结果未知代码是错误的。
第二种
int i=0;
int j=0;
int add(int,int);
add( i + 1, i = j + 2 );
这里又有问题先进行i+1呢还是先进行i=j+2呢。答案也是顺序未知。因为i+1的值依赖i=j+2。
------------------------------------------