c++第十二篇

简介: c++第十二篇
#include<bits/stdc++.h>
using namespace std;
void swap(int &a,int &b){
  int t=b;
  b=a;
  a=t;
}
int & test01(){
  int a=10;
  return a;
} 
int & test02(){
  static int a=10;//静态变量,存放在全局区,全局区上的数据在程序结束后系统释放 
  return a;
} 
void showValue(const int &a){
  cout<<"a= "<<a<<endl;
}
void func3(int& ref){
  ref = 100; // ref是引用,转换为*ref = 100
}
 int main()
 {
  //c++中引用的基本语法
  int a=10;
  int &b=a;
  //此时b和a同事指向了同一块地址
  cout<<a<<endl;
  cout<<b<<endl;
  b=20;
  cout<<a<<endl;
  cout<<b<<endl; 
  //使用引用的注意事项
  //1、引用必须初始化
  //2、引用在初始化后,不能改变
  int c=10;
  int &d=c;
  //int &b;是错误的,必须先初始化
  int e=30;
  //&b=c;是错误的,引用使用后就不可以改变
  //引用作函数参数,相当于地址传递
  int m=10;
  int n=20;  
  swap(m,n);
  cout<<"m"<<m<<endl;
  cout<<"n"<<n<<endl; 
  //引用作函数返回值
  //1、不要返回局部 变量的引用
  int & ref=test01(); 
  cout<<"ref= "<<ref<<endl;//第一次结果正确,因为编译器做了保留 
  cout<<"ref= "<<ref<<endl;//第二次结果错误,因为a的内存已经释放 
  //2、函数的调用可以作为左值 
  int & ref2=test02(); 
  cout<<"ref2= "<<ref2<<endl;
  cout<<"ref2= "<<ref2<<endl;
  test02()=1000;//如果函数的返回值是引用,函数调用可以作为左值 
  cout<<"ref2= "<<ref2<<endl;
  cout<<"ref2= "<<ref2<<endl;
  //引用的本质
  //引用的本质在c++中内部实现是一个指针常量
  //发现是引用,转换为 int* const ref = &a;
  int a0 = 10;
    //自动转换为 int* const ref = &a; 指针常量是指针指向不可改,也说明为什么引用不可更改
  int& ref3 = a0; 
  ref3 = 20; //内部发现ref是引用,自动帮我们转换为: *ref = 20;
  cout << "a0:" << a0 << endl;
  cout << "ref3:" << ref3 << endl;
  func3(a0);
  //常量引用
  //作用:常量引用主要用来修饰形参,防止误操作
  //在函数形参列表中,可以加ocnst修饰形参,防止形参改变实参
  const int &ref4 =10;
  //加上const修饰之后,编译器将代码修改int temp=10;const int & ref=temp;
  //ref=20;错误,加入const之后变成只读,不可以修改
  int aa=100;
  showValue(a); 
  return 0;
} 


相关文章
星际争霸之小霸王之小蜜蜂(十一)--杀杀杀
星际争霸之小霸王之小蜜蜂(十一)--杀杀杀
|
5月前
|
安全
babystack2.0-入土为安的第十六天
babystack2.0-入土为安的第十六天
47 0
|
1月前
第十四问:预编译头是什么?有什么用?
预编译头文件(PCH)通过预先编译常用且不常改变的头文件,减少重复编译,显著提高大型项目的编译速度。它还支持模块化开发,隐藏实现细节,增强代码的安全性和可维护性。即使是小型项目,预编译头也有助于未来的扩展和维护。
41 0
【原创】玩笑程序1,看看你是否能点中
【原创】玩笑程序1,看看你是否能点中
【原创】玩笑程序2,看看你是否能点中
【原创】玩笑程序2,看看你是否能点中
|
8月前
蓝桥杯真题代码记录(保险箱
蓝桥杯真题代码记录(保险箱
71 1
蓝桥杯真题代码记录(保险箱
星际争霸之小霸王之小蜜蜂(十二)--猫有九条命
星际争霸之小霸王之小蜜蜂(十二)--猫有九条命
|
存储 数据安全/隐私保护 Windows
U启动盘(NETBASE第十二课)
U启动盘(NETBASE第十二课)
161 0