c++变量的引用和指针
2016-07-22 15:05
423 查看
对变量的引用其实是为一个变量起一个别名。
常见的形式为:int &b = a; 该语句就声明b是a的引用
引用的实质:还是指针。声明b是a的引用,是在内存中为b开辟了一个指针型的存储单元,用来存放a的地址。输出b时,就输出b指向的a的值,就相当于*b。所以引用就是一个指针常量,只能指向一个指定的变量。
应用:将引用作为函数参数,实现参数传递方式中的地址传递方式。
举例:以最常见的两个变量交换为例
函数swap1的形参是指针变量,可以实现main函数中两个变量的交换。实参是地址,传递的也是地址,故这种函数参数传递的方式仍是“值传递”方式,只不过传递的是变量的地址罢了。
而函数swap2的形参是变量的引用,在参数传递时,使形参为实参的引用。实参是变量名,而传递的却是变量的地址,因此是传址方式。
常见的形式为:int &b = a; 该语句就声明b是a的引用
引用的实质:还是指针。声明b是a的引用,是在内存中为b开辟了一个指针型的存储单元,用来存放a的地址。输出b时,就输出b指向的a的值,就相当于*b。所以引用就是一个指针常量,只能指向一个指定的变量。
应用:将引用作为函数参数,实现参数传递方式中的地址传递方式。
举例:以最常见的两个变量交换为例
#include<iostream> #include<math.h> using namespace std; void swap1(int *p1, int *p2) { int temp; temp = *p1; *p1 = *p2; *p2 = temp; } void swap2(int &a,int &b) { int temp; temp = a; a = b; b = temp; } int main() { int a,b; a = 1; b = 2; swap1(&a,&b); swap2(a,b); cout<<a<<b<<endl; return 0; }
函数swap1的形参是指针变量,可以实现main函数中两个变量的交换。实参是地址,传递的也是地址,故这种函数参数传递的方式仍是“值传递”方式,只不过传递的是变量的地址罢了。
而函数swap2的形参是变量的引用,在参数传递时,使形参为实参的引用。实参是变量名,而传递的却是变量的地址,因此是传址方式。
相关文章推荐
- C++中嵌入python程序——参数传递
- [LeetCode练习题-C语言]之 Move Zeros
- 回车(CR)与换行(LF), '\r'和'\n'的区别
- 7月22日学习心得
- C++ 语法 : C/C++中static关键字作用总结
- PO、VO、BO、DTO、POJO、DAO之间的关系
- C语言算法知识(201607)-小结
- C++ Chrono Timer
- Leetcode 100. Same Tree (Easy) (cpp)
- 设计模式之状态STATE模式(C++)
- 用C++11的std::async代替线程的创建
- C语言中位移问题
- C++不确定参数个数函数调用
- Leetcode 101. Symmetric Tree (Easy) (cpp)
- c++中pow 与sqrt函数使用指南
- 数组中第K大的数
- max函数|C++返回数组中的最大值——max_element函数
- c++ string 末尾追加char字符
- C语言输出PI和正弦函数和余弦函数
- C++ ABI之名字改编(以Qt为例)