C++对C的改进和拓展\引用

简介: C++对C的改进和拓展\引用

"&"不是取地址运算符,而是声明引用的标记

引用条件:    1、函数参数或返回值

         2、已定义的变量,不能是常量或表达式

不为引用分配额外内存空间,与变量占同一段内存

不能建立 void引用、引用的引用、指向引用的指针、引用数组

#include <iostream>
using namespace std;
 
int x = 5,y = 10;
int& r = x;
 
void print()
{
  cout << "x=" << x << " y=" << y << " r=" << r << endl;
  cout << "x的地址>>" << &x << endl; //输出的是内存地址
  cout << "y的地址>>" << &y << endl;
  cout << "r的地址>>" << &r << endl;
}
 
int main()
{
  print();
  cout << endl;
  r = y;
  print();
  cout << endl;
  y = 100;
  x = y - 10;
  print();
  cout << endl;
 
  return 0;
}

引用作为形式参数

引用作为形式参数

不能在形参表中初始化,而由调用的实参完成

引用使实参变量的作用域扩大到原先无法进入的被调函数中

对引用的任何操作实际上就是对对应实参的操作

#include <iostream>
#include <string>
using namespace std;
 
void swap(int& a, int& b)
{
  int tmp = a;
  a = b;
  b = tmp;
}
 
void printout(int a, int b)
{
  cout << "a=" << a << "b=" << b << endl;
}
 
int main()
{
  int a = 1, b = 3, c = 5, d = 7;
  swap(a, b);
  printout(a, b);
 
  swap(c, d);
  printout(c, d);
 
  return 0;
}

常引用

//用法
int Fun(const int &x,int &y,int &z);
//一旦修改常引用形参,就会报错
//常引用可以保护对应实参不被修改

引用和指针的比较

  1. 引用无需指针(间接)运算符*,而指针一定要使用,使用引用简化程序
  2. 调用时,与引用形参对应的实参使变量名,而与指针形参对应的实参是变量的地址
  3. 引用形参不另外占用空间,但指针形参要额外占用空间
  4. 引用无法完全取代指针,指针有更灵活广泛的用法

无法替代指针的情况

  1. 指针与数组对应(指针形参对应数组实参)
  2. 链表(指针+结构体)
  3. 动态空间
  4. 指针数组、行指针变量、多级指针、函数指针

引用作为返回值

作为独立函数调用语句使用,忽略返回值,相当于 void 返回

使用函数的返回值

作为左值调用

#include <iostream>
#include <string>
using namespace std;
 
int& Fun(const int& x, int& y, int z)
{
  y++;
  z++;
  return y;
}
 
int main()
{
  int a = 1, b = 2, c = 3, d = 0;
  cout << "a=" << a << " b=" << b << " c=" << c << " d=" << d << endl;
  Fun(a, b, c); //方法一
  cout << "a=" << a << " b=" << b << " c=" << c << " d=" << d << endl;
  d = Fun(a, b, c); //方法二
  cout << "a=" << a << " b=" << b << " c=" << c << " d=" << d << endl;
  Fun(a, b, c) = 100;   //方法三,return 的是b的别名
  cout << "a=" << a << " b=" << b << " c=" << c << " d=" << d << endl;
  
  return 0;
}

return 后面只能是变量(引用也可以看成特殊变量)

自动局部变量不能作为引用返回(return后面变量的内存空间在本次函数调用结束后应当仍然存在)

return 后面返回的值不能是常引用

目录
相关文章
|
5月前
|
存储 安全 C++
C++中的引用和指针:区别与应用
引用和指针在C++中都有其独特的优势和应用场景。引用更适合简洁、安全的代码,而指针提供了更大的灵活性和动态内存管理的能力。在实际编程中,根据需求选择适当的类型,能够编写出高效、可维护的代码。理解并正确使用这两种类型,是掌握C++编程的关键一步。
74 1
|
4月前
|
存储 安全 C++
浅析C++的指针与引用
虽然指针和引用在C++中都用于间接数据访问,但它们各自拥有独特的特性和应用场景。选择使用指针还是引用,主要取决于程序的具体需求,如是否需要动态内存管理,是否希望变量可以重新指向其他对象等。理解这二者的区别,将有助于开发高效、安全的C++程序。
32 3
|
4月前
|
存储 自然语言处理 编译器
【C++入门 三】学习C++缺省参数 | 函数重载 | 引用
【C++入门 三】学习C++缺省参数 | 函数重载 | 引用
|
5月前
|
存储 安全 编译器
【C++航海王:追寻罗杰的编程之路】引用、内联、auto关键字、基于范围的for、指针空值nullptr
【C++航海王:追寻罗杰的编程之路】引用、内联、auto关键字、基于范围的for、指针空值nullptr
66 5
|
5月前
|
C++
C++引用
C++引用
|
5月前
|
C语言 C++
C++对C的改进和拓展\string类型
C++对C的改进和拓展\string类型
29 1
|
5月前
|
C++
C++对C的改进和拓展\名字空间
C++对C的改进和拓展\名字空间
23 1
|
5月前
|
C++
C++对C的改进和拓展:I/O 流
C++对C的改进和拓展:I/O 流
23 1
|
5月前
|
存储 安全 编译器
【C++入门】—— C++入门 (中)_引用
【C++入门】—— C++入门 (中)_引用
36 5