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