传值与传引用(C++)
reference(引用) 是C++对C的一个扩充
int a; int &b = a;//声明b是一个整形的引用变量
C语言,函数的参数传递有2种形式:传值方式调用和传引用方式调用
传值方式调用:
将实参的值传递给形参,形参是实参的一个拷贝
1)变量名作为实参(传值)
这是穿给形参的是变量的值。传递是单向的,在执行函数期间,形参发生变化,并不会传递给实参。
2)传递变量的指针(本质上仍然是传值,不过这个值是地址)
形参指针变量指向实参变量单元。
传引用方式调用:
实参的地址传给引用型形参
3)传引用
实参穿给形参的是实参的地址,当形参是实参的引用,形参值的改变自然会影响实参的值,形参和实参是同一个变量。
注意:用引用能够完成的用指针也一定能完成。但引用比指针更加方便。
不能建立引用数组
char c[6] = "hello"; char &rc[6] = c;//错误。。因为数组名只代表数组首元素的地址,本身并不是一个占有存储空间的变量
可以建立指针变量的引用
int i = 5; int *p = &i; int * &pt = p;//pt是一个指向整形变量的指针变量的引用,初始化为p
可以用const对引用加以限定,不允许改变引用的值
int i = 5; const int &a = i;//不允许改变a的值,但可以改变i的值