0
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 !

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

4

1 回答 1

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 的引用,即 的别名test,所以对 的操作ref也是对 的操作test

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

您可以think of同时对变量的地址进行操作VoidRef,因此它们具有相同的效果。VoidPtrtest

于 2013-04-20T22:15:52.993 回答