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
,因此它们具有相同的效果。VoidPtr
test