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;
} 


相关文章
|
2天前
|
Python
Python:晚上把附近的足浴店都给爬了一遍,好兄弟针不戳
Python:晚上把附近的足浴店都给爬了一遍,好兄弟针不戳
|
10月前
扫雷小游戏 万字全网最详细(可展开一片空白)下
扫雷小游戏 万字全网最详细(可展开一片空白)
38 0
|
10月前
|
小程序 算法 数据可视化
扫雷小游戏 万字全网最详细(可展开一片空白)上
扫雷小游戏 万字全网最详细(可展开一片空白)
63 0
蓝桥杯之单片机学习(二十一)——自动售水机(附题目和完整代码)
蓝桥杯之单片机学习(二十一)——自动售水机(附题目和完整代码)
319 0
蓝桥杯之单片机学习(二十一)——自动售水机(附题目和完整代码)
|
Java Nacos 开发者
项目第十天内容介绍 | 学习笔记
快速学习 项目第十天内容介绍
41 0
|
canal 数据库 数据安全/隐私保护
项目的第十七天内容介绍 | 学习笔记
快速学习 项目的第十七天内容介绍
59 0
|
机器学习/深度学习 存储 编解码
第十三周:文件
重点学习按位运算
100 0
|
存储 机器学习/深度学习 算法
大逆不道,从天界偷下来的算法修仙秘籍竟然传到你手上~~(结尾有彩蛋)
这有可能是你见过最离谱的标题 这有可能是你没见过的技术文章模式 我不知道我的选择是否正确,但是我的想法就是: 不再让技术冷冰冰,让所有人学习中获得快乐!
210 1
|
存储 前端开发 算法
从零开始实现放置游戏(十五)——实现战斗挂机(6)在线打怪练级
 本章初步实现游戏的核心功能——战斗逻辑。   战斗系统牵涉的范围非常广,比如前期人物的属性、怪物的配置等,都是在为战斗做铺垫。   战斗中,人物可以施放魔法、技能,需要技能系统支持。   战斗胜利后,进行经验、掉落结算。又需要背包、装备系统支持。装备系统又需要随机词缀附魔系统。   可以说是本游戏最硬核的系统。   因为目前技能、背包、装备系统都还没有实现。我们先初步设计实现一个简易战斗逻辑。   战斗动作仅包括普通攻击,有可能产生未命中、闪避和暴击。
从零开始实现放置游戏(十五)——实现战斗挂机(6)在线打怪练级