私は参考文献に問題があります。 このコードを考えてみましょう:それのクローンまたはコピーが渡されていない変数自体れるよう関数の引数としての参照?
ここvoid pseudo_increase(int a){a++;}
int main(){
int a = 0;
//..
pseudo_increase(a);
//..
}
、変数a
の値が増加することはありません。
は今、私たちは別の例を考えてみましょう:
void true_increase(int& a){a++;}
int main(){
int a = 0;
//..
true_increase(a);
//..
}
ここではa
の値が増加しますと言われている - しかし、なぜ?
true_increase(a)
が呼び出されると、a
のコピーが渡されます。これは別の変数になります。したがって、&a
は、実際のアドレスa
とは異なります。では、a
の値はどのように増加しましたか?
私が間違っている箇所を修正してください。あなたは間違っているところだtrue_increase(A)が呼び出され
関数の引数とそれに渡される変数に異なる識別子を使用して、自分自身をさらに混同しないようにしてください。 – AusCBloke
参照渡しではコピーは作成されません。これは同じ変数への参照です。 – jweyrich
最初にポインタについて学ぶことをお勧めします。次に、参照がどのように初期化されていないオブジェクトや無効なポインタなどの痛みを軽減することができるかをお勧めします。 – sarat