2013-04-20 58 views
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 ! 

爲什麼兩個void都做同樣的事情? 哪個void需要更多的資源?通過引用傳遞的int與int的傳遞地址之間的區別

+1

是的,他們都做同樣的事情(雖然我會去第一個,因爲它涉及實施一個不太侵入語法)。 – 0x499602D2 2013-04-20 22:15:23

+0

引用通常作爲引擎下的指針來實現,因此資源明智,它們應該是相同的。一般的參考文獻應該是優選的。 – 2013-04-20 22:15:48

+0

使用引用的主要優點(IMO)使它不可能無意中傳遞空指針或其他無效指針。 – 2013-04-20 22:17:04

回答

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的地址,因此,它們具有相同的效果。

相關問題