首先來複習一下三者的用法
//call by value
int main(){
int a = 10;
plus(a);
}
int plus(int a){
//兩個a位於不同記憶體空間
return a++;
}
//call by address
int main(){
int a = 10;
plus(&a); // a = 11
}
void plus(int* a){
//傳入a的記憶體位置,function中的a pointer指向main中的a變數
(*a)++;
}
//call by reference
int main(){
int a = 10;
plus(a); // a = 11;
}
void plus(int &a){
//作用與call by address相同,寫法更簡潔 C++ only
a++;
}
整理到的資料顯示:Reference (address) > Value
call by value 是速度最慢的,call by ref與 call by addr意思差不多,速度似乎也差不多? call by value慢是因為它必須先 copy一份再傳給被呼叫者
看來先把程式中函式呼叫call by value的部分先改掉試試看

沒有留言:
張貼留言