#include <iostream> int main() { int x = 10; int y = 20; std::cout << "[交換前]\n"; std::cout << "x=" << x << ", y=" << y << "\n"; int tmp; // x, y の交換のために一時的に使用する変数 tmp = x; x = y; y = tmp; std::cout << "[交換後]\n"; std::cout << "x=" << x << ", y=" << y << "\n"; return 0; } |
#include <iostream> void swap(int x, int y); // 関数のプロトタイプ int main() { int x = 10; int y = 20; std::cout << "[交換前]\n"; std::cout << "x=" << x << ", y=" << y << "\n"; swap(x, y); // 関数による交換操作 (?) std::cout << "[交換後]\n"; std::cout << "x=" << x << ", y=" << y << "\n"; return 0; } void swap(int x, int y) { int tmp; // x, y の交換のために一時的に使用する変数 tmp = x; x = y; y = tmp; } |
(ヒント追加) 「x、y のアドレスを表示する命令」とは、例えば std::cout << "x のアドレスは" << &x << "、y のアドレスは" << &y << "\n" ; のようにすればよい。これを、 ・x と y に初期値を代入している部分 ・値が交換されている部分 ・プログラムの最後に x と y の値を表示している部分 の位置などに挿入し、それぞれの x、y が実際にメモリでどこに位置するかを考えることになる。 「表示している x、y 」と「交換している x、y 」は同じと言えるだろうか? |