C++中引用与指针的区别

216 阅读2分钟

在c++中我们经常会见到或者使用引用,今天小编就带着大家探讨一下引用的基本使用方法及其与指针的主要区别。

引用简单来说就是给变量起别名,其基本语法为

数据类型 &别名=原名

引用也有一些注意事项:

1.引用必须初始化

2.引用在初始化之后,不可以改变

测试示例如下:

int main()
{
  int a=20;
  int &b=a;
  cout << "a=" << a << endl;
  cout << "b=" << b << endl;
  
  b=100;
  
  cout << "a=" << a << endl;
  cout << "b=" << b << endl;
  system("pause");
  return 0;
}

引用还可以做函数参数

作用:函数传参时,可以利用引用的技术让形参修饰实参。

优点:可以简化指针修改实参。

示例:

void myswap(int &a,int &b)
{
  int temp=a;
  a=b;
  b=temp;
}
int main()
{
  int a=10;
  int b=20;
  myswap(a,b);
  cout << "a=" << a << endl;
  cout << "b=" << b << endl;
  system("pause");
  return 0;
}

总结:通过引用参数产生的效果同按地址传递是一样的,引用的语法更清楚简单。

回到主题,引用的本质在c++内部实现其实是一个指针常量。

示例:

//引用可以转换为 int* const ref=&a;
void func(int& ref)
{
  ref=100;//ref是引用,转换为*ref=100
}
int main()
{
  int a=10;
  //自动转换为int *const ref=&a;指针常量是指针指向不可改,也说明为什么引用不可更改
  int &ref=a;
  ref=20;//内部发现ref是引用,自动帮我们转换为:*ref=20;
  
  cout << "a=" << a << endl;
  cout << "ref=" << ref << endl;
  
  func(a);
  return 0;
}
  

结论:c++推荐用引用技术,因为语法方便,引用的本质是指针常量,但是所有的指针操作编译器都帮我们做了。

由于小编第一次写文章,所以如果文章中有什么错误,还请广大读者积极指出。