C++中关于引用与指针
作者:网络转载 发布时间:[ 2016/11/18 11:12:36 ] 推荐标签:指针 C++
引用的声明: 数据类型 & 引用名 = 初始值(初始值为变量名)
C++中引用是起别名的意思,声明一个引用并不是定义一个新的变量。编译器会给他分配内存空间,因此引用本身占据内存空间,但是引用表现给用户看到的并不是引用自身的地址。
//如下程序
<code>int ee = 100;
int ff = 200;
int &aa = ee;
int &bb = ff;
cout << "ee地址" << &ee << " ee值" << ee << endl;
cout << "ff地址" << &ff << " ff值" << ff << endl;
cout << "aa地址" << &aa << " aa值" << aa << endl;
cout << "bb地址" << &bb << " bb值" << bb << endl;
</code>
C++中关于引用与指针
从中可以看到,引用的地址跟变量是一样,但是在真实内存中,引用与变量是分开存放的,对引用的操作有点类似与指针,但又不完全一样。
当引用作为函数的参数时,有如下特点:
1、在进行实参和形参结合时,不会为形参分配内存空间,而是将形参作为实参的一个别名。使用引用传递函数参数时,内存中并没有产生实参的副本,他是直接对实参进行操作(类似指针);而使用一般变量传递函数参数时,当发生函数调用时,需要给形参分配存储单元,形参变量是实参变量的副本。因此,当参数传递的数据较大时,用引用比用一般变量传递参数的效率高,且占用空间小。
2、用引用能达到指针传递一样的效果,函数内对形参的操作相当与直接对实参的操作;
//引用作为形参
<code>void swap(int & a, int &b)
{
int map = a;
a = b;
b = map;
cout << "a地址" << &a << " a值" << a << endl;
cout << "b地址" << &b << " b值" << b << endl;
}
int main(void)
{
int ee = 100;
int ff = 200;
cout << "ee地址" << &ee << " ee值" << ee << endl;
cout << "ff地址" << &ff << " ff值" << ff << endl;
swap(ee, ff);
cout << "ee地址" << &ee << " ee值" << ee << endl;
cout << "ff地址" << &ff << " ff值" << ff << endl;
return 0;
}
</code>
C++中关于引用与指针
//对比指针
<code>void swap(int * a, int *b)
{
int map = *a;
*a = *b;
*b = map;
cout << "a地址" << &a << " a值" << a << endl;
cout << "b地址" << &b << " b值" << b << endl;
}
int main(void)
{
int ee = 100;
int ff = 200;
cout << "ee地址" << &ee << " ee值" << ee << endl;
cout << "ff地址" << &ff << " ff值" << ff << endl;
swap(&ee,&ff);
cout << "ee地址" << &ee << " ee值" << ee << endl;
cout << "ff地址" << &ff << " ff值" << ff << endl;
return 0;
}
</code>
C++中关于引用与指针
从中可以看出指针和引用的相似与区别。
//函数参数为一般变量;
<code>void swap(int a, int b)
{
int map = a;
a = b;
b = map;
cout << "a地址" << &a << " a值" << a << endl;
cout << "b地址" << &b << " b值" << b << endl;
}
int main(void)
{
int ee = 100;
int ff = 200;
cout << "ee地址" << &ee << " ee值" << ee << endl;
cout << "ff地址" << &ff << " ff值" << ff << endl;
swap(ee,ff);
cout << "ee地址" << &ee << " ee值" << ee << endl;
cout << "ff地址" << &ff << " ff值" << ff << endl;
return 0;
}
</code>
C++中关于引用与指针
通过对比可以发现利用指针和引用的优势。
引用同样可以运用在函数返回
//函数返回引用类型
<code>int& fun(int & num)
{
return num;
}
int main(void)
{
int aa, bb;
aa = fun(bb);
cout << aa << " " << bb << endl;
return 0;
}</code>
//函数返回指针类型
<code> int* fun(int * num)
{
return num;
}
int main(void)
{
int aa, bb;
aa = *fun(&bb);
cout << aa << " " << bb << endl;
return 0;
}</code>
----------------------结束语---------------------------
<code>所以以后写程序优先考虑用引用,其次是指针,后一般变量。</code>
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11