最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

世界观速讯丨C++引用【cherno课程学习】

来源:博客园


(资料图片仅供参考)

定义

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}

关键词: 进行修改 不是一个 更加强大