#include <iostream>
void call_by_value(int x, int *y) {
*y = 2; // 呼出し元に影響する
x = 3; // 呼出し元に影響しない
static int z = 4;
y = &z; // 呼出し元に影響しない
}
void call_by_reference(int &x, int *&y) {
*y = 5; // 呼出し元に影響する
x = 6; // 呼出し元に影響する
static int z = 7;
y = &z; // 呼出し元に影響する
}
int main(void) {
int value = 1; // 値型変数
int *pointer = &value; // ポインタ型変数
call_by_value(value, pointer); // 値型変数、ポインタ型変数の値渡し
std::cout << value << " " << *pointer << std::endl; // 2 2
call_by_reference(value, pointer); // 値型変数、ポインタ型変数の参照渡し
std::cout << value << " " << *pointer << std::endl; // 6 7
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdm9pZCBjYWxsX2J5X3ZhbHVlKGludCB4LCBpbnQgKnkpIHsKICAgICp5ID0gMjsgICAvLyDlkbzlh7rjgZflhYPjgavlvbHpn7/jgZnjgosKICAgIHggPSAzOyAgICAvLyDlkbzlh7rjgZflhYPjgavlvbHpn7/jgZfjgarjgYQKICAgIHN0YXRpYyBpbnQgeiA9IDQ7CiAgICB5ID0gJno7ICAgLy8g5ZG85Ye644GX5YWD44Gr5b2x6Z+/44GX44Gq44GECn0KCnZvaWQgY2FsbF9ieV9yZWZlcmVuY2UoaW50ICZ4LCBpbnQgKiZ5KSB7CiAgICAqeSA9IDU7ICAgLy8g5ZG85Ye644GX5YWD44Gr5b2x6Z+/44GZ44KLCiAgICB4ID0gNjsgICAgLy8g5ZG85Ye644GX5YWD44Gr5b2x6Z+/44GZ44KLCiAgICBzdGF0aWMgaW50IHogPSA3OwogICAgeSA9ICZ6OyAgIC8vIOWRvOWHuuOBl+WFg+OBq+W9semfv+OBmeOCiwp9CgppbnQgbWFpbih2b2lkKSB7CiAgICBpbnQgdmFsdWUgPSAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOWApOWei+WkieaVsAogICAgaW50ICpwb2ludGVyID0gJnZhbHVlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDjg53jgqTjg7Pjgr/lnovlpInmlbAKICAgIGNhbGxfYnlfdmFsdWUodmFsdWUsIHBvaW50ZXIpOyAgICAgICAgICAgICAgICAgICAgICAgLy8g5YCk5Z6L5aSJ5pWw44CB44Od44Kk44Oz44K/5Z6L5aSJ5pWw44Gu5YCk5rih44GXCiAgICBzdGQ6OmNvdXQgPDwgdmFsdWUgPDwgIiAiIDw8ICpwb2ludGVyIDw8IHN0ZDo6ZW5kbDsgIC8vIDIgMgkKICAgIGNhbGxfYnlfcmVmZXJlbmNlKHZhbHVlLCBwb2ludGVyKTsgICAgICAgICAgICAgICAgICAgLy8g5YCk5Z6L5aSJ5pWw44CB44Od44Kk44Oz44K/5Z6L5aSJ5pWw44Gu5Y+C54Wn5rih44GXCiAgICBzdGQ6OmNvdXQgPDwgdmFsdWUgPDwgIiAiIDw8ICpwb2ludGVyIDw8IHN0ZDo6ZW5kbDsgIC8vIDYgNwp9