この記事は3年以上前に書かれた記事です。情報が古い可能性があります。
よくやるんだけど、よく忘れるのでメモ。
void func(int a);
の a は、普通の値渡し。func() 内で引数を変更しても呼び出し元には影響しない。
void func(int *a);
の a はポインタ渡し。func() 内で引数を変更すると呼び出し元にも反映される。
この場合、呼び出しは、
int x;
func(&x);
とし、func() 内で引数 a を変更する場合は、
*a = 0;
などとする。
void func(int &a);
の a は参照渡し。
func() 内で引数を変更すると呼び出し元にも反映される。この場合、呼び出しは、
int x;
func(x);
とし、func() 内で引数 a を変更する場合は、
a = 0;
などとする。”&” や “*” はつけない。