本篇介绍的变量引用与之前介绍的指针不是同一概念,它们有本质的区分:
1)不存在空引用。引用必须连接到一块合法的内存。
2)一旦引用被初始化为一个对象,就不能被指向到另一个对象。指针可以在任何时候指向到另一个对象。
3)引用必须在创建时被初始化。指针可以在任何时间被初始化。
下面代码介绍其应用场景,供参考
- /*
- * Author:W;
- * 变量引用:是已定义声明的变量的“别名”
- * 引用与指针的区别:
- * 1)不存在空引用。引用必须连接到一块合法的内存。
- * 2)一旦引用被初始化为一个对象,就不能被指向到另一个对象。指针可以在任何时候指向到另一个对象。
- * 3)引用必须在创建时被初始化。指针可以在任何时间被初始化。
- */
-
- //引入头文件:头文件包含了程序中必需的或有用的信息【单行注释】
- #include <iostream>
-
- //命名空间使用
- using namespace std;
- //交换函数声明
- void swap(int& a, int& b);
- //设置数组特定位置的值
- int& setArrValue(int* array, int index);
-
- //main程序执行入口函数
- int main()
- {
- //声明变量
- int a = 3;
- //声明引用变量
- int& b = a;
-
- cout << "=====引用变量=====" << endl;
- cout << "a=" << a << endl;
- cout << "b=" << b << endl;
-
- cout << "=====引用变量作为函数参数=====" << endl;
- int c = 4;
- int d = 10;
- cout << "交换之前 :c = " << c << " d = " << d << endl;
- swap(c, d);
- cout << "交换之后 :c = " << c << " d = " << d << endl;
-
- cout << "=====函数返回引用=====" << endl;
- //【返回一个引用时,要注意被引用的对象不能超出作用域。所以返回一个对局部变量的引用是不合法的,但是,可以返回一个对静态变量的引用。】
- int arr[3] = { 1,4,7 };
- cout << "改变前的值" << endl;
- for (int i = 0; i < 3; i++)
- {
- cout << "arr[" << i << "] = " << arr[i] << endl;
- }
- setArrValue(arr,1) = 5;
- cout << "改变后的值" << endl;
- for (int i = 0; i < 3; i++)
- {
- cout << "arr[" << i << "] = " << arr[i] << endl;
- }
- }
-
- //改变数组特定位置的值
- int& setArrValue(int* array,int index)
- {
- int& ref = array[index];
-
- return ref;
- }
-
- /// <summary>
- /// 交换函数声明
- /// </summary>
- /// <param name="a"></param>
- /// <param name="b"></param>
- void swap(int& a, int& b)
- {
- int temp;
- temp = a; /* 保存地址 a 的值 */
- a = b; /* 把 b 赋值给 a */
- b = temp; /* 把 a 赋值给 b */
- }
运行结果如下:

到此这篇关于C++变量引用的概念介绍的文章就介绍到这了,更多相关C++变量引用内容请搜索w3xue以前的文章或继续浏览下面的相关文章希望大家以后多多支持w3xue!