通过引用传递的int型与传递的int型的地址之间的区别

Difference between an int passed by reference and a passed address of an int

本文关键字:int 之间 区别 地址 引用      更新时间:2023-10-16
void VoidRef (int &ref){
   ref++;
}
void VoidPtr (int *ptr){
  (*ptr)++;
}
int test= 5;
VoidRef(test);
cout << test;  // is 6
VoidPtr(&test);
cout << test;  // is 7 !

为什么两个void做同样的事情?哪个空洞需要更多的资源?

void VoidRef (int &ref){
              //^^pass by reference
   ref++;
}
void VoidPtr (int *ptr){
                //^^ptr stores address of test
  (*ptr)++;
}

Why do both voids do the same thing?

ref是对测试的引用,即test的别名,因此对ref的操作也要对test进行操作。

ptr是存储test的内存地址的指针,因此(*ptr)++将存储在内存地址上的值增加1。第一个输出为6,第二个输出为7的原因是,对这两个函数的每次调用都会使变量值增加1。

可以对变量test的地址进行think ofVoidRefVoidPtr的操作,因此它们具有相同的效果。