“引用变量”和“将引用用作函数参数”
来源:互联网 发布:扩展人脉的软件 编辑:程序博客网 时间:2024/05/21 15:50
一. 引用变量
引用变量使用&来声明。&并不是地址操作符,而是类型标示符的一部分。
int main(int argc, char* argv[])
{
int x = 2;
int & y = x;
y = 3;
int m = 4;
printf("x = %d, y = %d, m = %d/n", x, y, m);
printf("x address = %d, y address = %d/n", &x, &y);
printf("/ny = m;/n");
y = m;
printf("x = %d, y = %d, m = %d/n", x, y, m);
printf("x address = %d, y address = %d, m address = %d/n", &x, &y, &m);
return 0;
}
执行结果:
x = 3, y = 3, m = 4
x address = 1310588, y address = 1310588
y = m;
x = 4, y = 4, m = 4
x address = 1310588, y address = 1310588, m address = 1310580
通过上例可以看出:
①x和y指向相同的地址,x和y的值相等。
②m修正y的值,但没有改变y的引用,依然指向x。
③引用必须赋初值,并且不能改变;所以int & y = x;等价于int * const py = &x;
引用y和表达式(*py)扮演了相同的角色。
二. 将引用用作函数参数
引用经常被用于函数参数,使得函数中的变量名称为调用程序中的变量的别名。这种按照引用传递可以直接访问调用函数中的变量。
int main(int argc, char* argv[])
{
int x = 10;
int y = 20;
printf("x = %d, y = %d/n", x, y);
swapref(x, y);
printf("/ncall swapref(x, y);/n");
printf("x = %d, y = %d/n", x, y);
return 0;
}
void swapref(int &x, int &y) {
int temp = x;
x = y;
y = temp;
}
执行结果:
x = 10, y = 20
call swapref(x, y);
x = 20, y = 10
如果向swapref(x +2, y)传递这样的参数,编译器会给出错误信息,因为x+2并不是变量。但在参数为const引用时,C++却允许这样做,此时仅仅是使用变量,并不能对其进行赋值操作。
int main(int argc, char* argv[])
{
int x = 5;
int y = square(x+1);
printf("x = %d, the result = %d/n", x, y);
return 0;
}
int square(const int & x) {
return x*x;
}
执行结果:x = 5, the result = 36
- “引用变量”和“将引用用作函数参数”
- php引用(&)变量引用,函数引用,对象引用和参数引用用法详解
- 将引用作为函数参数
- C++中的引用变量、默认参数和函数重载
- php 函数参数引用和普通变量 传参区别
- c++引用和引用作为函数参数
- 引用和引用参数
- 引用作为函数参数和常引用作为函数参数
- PHP变量引用、函数引用、对象引用
- php值引用和传递引用以及 变量函数
- 引用变量和引用数组
- 变量函数引用数组
- php函数变量引用
- 函数重载&引用变量
- PHP 引用“&“之变量引用,函数引用,对象引用
- C++ const引用、临时变量 引用参数
- C++ const引用、临时变量 引用参数
- 函数参数中const 引用 和 传值
- 实现数据内存缓存,提高读取数据效率
- web网页优化
- C#的DES加密解密算法【vs2005】
- 校图书馆使用及版权保护
- 查询表中的重复记录
- “引用变量”和“将引用用作函数参数”
- 子类继承父类,还是这样搞吧
- C语言程序设计 自测题
- SQL语句数据类型转换,int——string
- 用C#替换宏,实现动态创建Excel下拉框及批注
- java第一节入门课
- Flex自定义组件与自定义事件
- Profibus-DP智能从站开发过程中若干核心问题的探讨
- 在SqlServer2005环境下查看当前数据库及表、字段等定义信息的sql