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
を操作できるため、同じ効果があります。VoidPtr
test