### 参照
型名& 参照名 = 変数
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;
}