首页 > 编程语言 >C++引用【cherno课程学习】

C++引用【cherno课程学习】

时间:2023-01-09 20:35:05浏览次数:40  
标签:value cherno int C++ Incrament 课程 引用 main ref

定义

int main() {
    int a = 5;
    int* b = &a;//这个是指针
    int& ref = a;//这个是引用
    std::cin.get();
}
  1. ref变量实际上不存在,只存在于源代码中,
  2. 如果对代码进行编译,实际上不会得到两个变量aref,只会得到a

ref进行修改,结果a也会受到改变

使用

void Incrament(int value){ //注意这里没有使用引用&
    value++;
}
int main() {
    int a = 5;
    Incrament(a);
    std::cout << a << std::endl; //结果为  5
    std::cin.get();
}

我们实际上没有将值传递给函数,我们可以将变量a的地址传递过去,在函数里查找这个地址然后对地址上的数字进行修改。即下面这段代码

void Incrament(int* value){ //表示这个函数需要传入的是指针,即地址
    (*value)++; //注意这里还要解引用
}
int main() {
    int a = 5;
    Incrament(&a); // 传入a的地址
    std::cout << a << std::endl;//结果为6
    std::cin.get();
}

接下来对上述代码进行简化---使用引用&

void Incrament(int& value){//主要改变在这里,使用了引用&
    value++;
}
int main() {
    int a = 5;
    Incrament(a);
    std::cout << a << std::endl;// 结果为 6
    std::cin.get();
}

实际上,就是定义了函数的外部变量,我想在这个函数里面对这个外部变量进行修改

  1. 引用能做的,指针都可以完成
  2. 指针比引用更加强大
  3. 能使用引用就使用引用,因为引用能使得代码看的更加简洁
  4. 引用不是一个变量,定义了后就必须赋值

引用的注意点

int main() {
    int a = 5;
    int b = 8;
    int& ref = a;
    ref = b; // 这句话的意思将b的值赋给a

  //代码走到这里 a=8,b=8

    std::cout << a << std::endl;
    std::cin.get();
}

如果需要更改引用的话,需要使用指针的思路

int main(){
  int a = 5;
  int b = 8;
  int* ref = &a;
  *ref = 2;
  ref = &b;
  *ref = 1;

//结果会输出 a = 2  b = 1
}

标签:value,cherno,int,C++,Incrament,课程,引用,main,ref
From: https://www.cnblogs.com/jackjie/p/17038444.html

相关文章

  • C++实现顺序栈相关操作代码
    #include<iostream>#include<cstdlib>usingnamespacestd;#defineMAXSIZE100#defineOK1#defineERROR0#defineOVERFLOW-2typedefintStatus;typedefintElemtype......
  • C++实现链队列相关操作代码
    #include<iostream>#include<cstdlib>usingnamespacestd;#defineMAXSIZE100#defineOK1#defineERROR0typedefintStatus;typedefintElemtype;typedefstructQno......
  • C++成员初始化表达式列表的使用
    在类的构造函数中,首选使用成员初始化表达式列表去给类的对象赋值,这个比构造函数体种赋值速度更快,开销小解答如下:赋值初始化,通过在函数体内进行赋值初始化;列表初始化,在......
  • 软件开发入门教程网之C++ 引用
    引用变量是一个别名,也就是说,它是某个已存在变量的另一个名字。一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量。​​C++引用vs指针​​引用很容易......
  • ​​软件开发入门教程网之​​C++ 信号处理
     信号是由操作系统传给进程的中断,会提早终止一个程序。在UNIX、LINUX、MacOSX或Windows系统上,可以通过按Ctrl+C产生中断。有些信号不能被程序捕获,但是下表所列......
  • python多线程应用-批量下载拉勾网课程
    importconcurrentimportosimportreimporttimefromcollections.abcimportIterablefromCrypto.CipherimportAESfromtool.request_mainimportrequestMain......
  • python多线程应用-批量下载视频课程(宠医堂)
    importosimportreimportshutilimporttimefromcollections.abcimportIterableimportconcurrent.futuresfromCrypto.CipherimportAESimportrequestsfrom......
  • c++ opencv mfc基础入门
    参考文献:  计算机视觉面试c++ 字符串的按词倒序 C++;MFC点击弹出自定义对话框VC++基于MFC更新编辑框中的内容 MFC界面编程基础(11):静态文本框、命令按钮和编辑......
  • Egon推荐小白转行IT全套精品课程
    1、python全栈高级项目开发课程如下,适用于小白自学入行python开发、在职工程师高级提升2、linux高级云算计课程(80%都是Egon亲自讲解,非常难得)3、更多Egon亲授新课,请关注egon......
  • [c++实践]内存对齐与伪共享
    内存对齐与伪共享时间测试类该类会在后续的测试中用于运行时间测试。//public/timer.h#include<chrono>#include<iostream>#include<functional>structScopeTimer{......