### 参照
型名& 参照名 = 変数
int main() { int a = 5; int& rA = a; cout << "変数aの値は" << a << "です。\n"; cout << "参照rAの値は" << rA << "です。\n"; rA = 50; cout << "rAに50を代入しました。\n"; cout << "参照rAの値は" << rA << "です。\n"; cout << "変数aの値は" << a << "です。\n"; cout << "参照rAのアドレスは" << &rA << "です。\n"; cout << "変数aのアドレスは" << &a << "です。\n"; return 0; }
$ g++ -o sample sample.cpp && ./sample
変数aの値は5です。
参照rAの値は5です。
rAに50を代入しました。
参照rAの値は50です。
変数aの値は50です。
参照rAのアドレスは0xfffff784567cです。
変数aのアドレスは0xfffff784567cです。
参照rAはaと全く同じ
参照の場合は引数を変更することができる。
void swap(int& x, int& y); int main() { int num1 = 5; int num2 = 10; cout << "変数num1の値は" << num1 << "です。\n"; cout << "変数num2の値は" << num2 << "です。\n"; cout << "変数num1とnum2の値を交換します。\n"; swap(num1, num2); cout << "変数num1の値は" << num1 << "です。\n"; cout << "変数num2の値は" << num2 << "です。\n"; return 0; } void swap(int& x, int& y){ int tmp; tmp = x; x = y; y = tmp; }
$ g++ -o sample sample.cpp && ./sample
変数num1の値は5です。
変数num2の値は10です。
変数num1とnum2の値を交換します。
変数num1の値は10です。
変数num2の値は5です。
関数の引数にポインタ、参照を使うと、呼び出し元の実引数を変更できる
### Practice
1. x, 2.×, 3.○
void add(int* num1, int* num2, int num3); int main() { int num1, num2, num3; cout << "2科目分の点数を入力してください。\n"; cin >> num1; cin >> num2; cout << "加算する点数を入力してください。\n"; cin >> num3; add(&num1, &num2, num3); cout << "科目1は" << num1 << "点となりました。\n"; cout << "科目2は" << num2 << "点となりました。\n"; return 0; } void add(int* num1, int* num2, int num3) { *num1 += num3; *num2 += num3; }
void add(int& num1, int& num2, int num3); int main() { int num1, num2, num3; cout << "2科目分の点数を入力してください。\n"; cin >> num1; cin >> num2; cout << "加算する点数を入力してください。\n"; cin >> num3; add(num1, num2, num3); cout << "科目1は" << num1 << "点となりました。\n"; cout << "科目2は" << num2 << "点となりました。\n"; return 0; } void add(int& num1, int& num2, int num3) { num1 += num3; num2 += num3; }