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あるため、 on の操作は onの操作でrefもありtestます。
ptrは のメモリ アドレスを格納するポインタであるtestため、メモリ アドレス(*ptr)++に格納されている値を 1 増やします。最初の出力が 6 で 2 番目の出力が 7 である理由は、これら 2 つの関数を呼び出すたびに変数の値が 1 ずつインクリメントされるためです。
変数のアドレスに対してと のthink of両方VoidRefを操作できるため、同じ効果があります。VoidPtrtest