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

时间:2013-04-20 22:10:31

标签: c++ pointers parameters reference

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 !

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

1 个答案:

答案 0 :(得分:0)

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。

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