1.引用的定义
2.引用作函数参数
3.引用做函数的返回值
4.引用的本质
学习内容: 1. 引用的定义
引用的作用就是给变量起别名,具体语法为:
数据类型 &别名 = 原名;
注意:(1)引用必须初始化,比如
int a = 18; int &b = a;//只能传入a的名称,不能传入a的值18
注意:(2)引用在初始化之后不能更改,比如
int a = 18; int b = 28; int &c = a; int &c = b;//同一个别名不能多次使用,否则报错!
无论是别名还是原名,二者都属于同一内存,只要操作其一就会改变另一个的值
2. 引用作函数形参作用:引用作函数的形参,可以修饰实参。
优点:可以简化指针
引用传递和地址传递都可以通过形参来修饰实参!!!
#include3. 引用做函数的返回值 3.1 不能返回局部变量的引用;using namespace std; void swap1(int* a, int* b) { int temp = *a; *a = *b; *b = temp; cout << "a = " << *a << "t"; cout << "b = " << *b << "t" << endl;; } void swap2(int& a, int& b) { int temp = a; a = b; b = temp; cout << "a = " << a << "t"; cout << "b = " << b << "t" << endl; } int main() { int a = 18; int b = 20; cout << "a = " << a << "t"; cout << "b = " << b << "t" << endl; swap1(&a, &b);//调用指针 swap2(a, b);//引用 system("pause"); return 0; }
#includeusing namespace std; int& test() { int a = 18; return a; } int main() { int &ref = test(); cout << "a = " << ref << endl; cout << "a = " << ref << endl; system("pause"); return 0; }
总结:不能返回局部变量的地址和引用。这是因为局部变量在栈区,函数执行完后会自动释放!!!!!!!!当返回静态变量时,可以返回其引用。这是因为静态变量在全局区,其上的数据在程序结束后由系统释放!!!!!
局部变量在栈区:函数执行完毕!!
静态变量在全局区:整个程序结束后系统释放!!!
当返回静态变量时,可以返回其引用;
#include3.2 函数的调用可以作为左值using namespace std; int& example() { static int a = 18; return a; } int main() { int &ref = example(); cout << "a = " << ref << endl; cout << "a = " << ref << endl; system("pause"); return 0; }
#include4. 引用的本质(选学)using namespace std; int& example() { static int a = 18; return a; } int main() { int &ref = example(); cout << "a = " << ref << endl; cout << "a = " << ref << endl; example() = 100; cout << "a = " << ref << endl; cout << "a = " << ref << endl; system("pause"); return 0; }
引用的本质是:一个指针常量。主要是用来修饰实参,防止误操作。在函数形参列表中,可以加上const来现指实参改变。



