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 !
为什么两个空洞都做同样的事情? 哪个空白需要更多资源?
答案 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 of
和VoidRef
VoidPtr
可以对变量test
的地址进行操作,因此,它们具有相同的效果。