C++ でポインタを使って数値を入れ替える

C++Beginner
オンラインで実践に進む

はじめに

この実験では、C++ でポインタを使って 2 つの数値を入れ替える方法を学びます。このプログラムは、2 つの数値のアドレスを関数に渡すことでそれらを入れ替え、ポインタを使ってメモリ内のそれらの場所を指し示します。

ヘッダー ファイルをインクルードして関数を宣言する

まず、必要なヘッダーファイルをインクルードし、2 つの整数型ポインタを引数とする swap 関数を宣言します。

#include <iostream>
using namespace std;

//2 つの数値を入れ替えるための Swap 関数
void swap(int *num1, int *num2);

swap 関数を定義する

ここでは、swap 関数を次のように実装します。

void swap(int *num1, int *num2) {
       int temp;
       //num1 の値を一時変数にコピーする
       temp = *num1;

       //num2 の値を num1 にコピーする
       *num1 = *num2;

       //一時変数に格納されている num1 の値を num2 にコピーする
       *num2 = temp;
}

この関数は 2 つの整数型ポインタを引数とし、一時変数を使ってそれらが指す値を入れ替えます。

2 つの数値を入力して swap 関数を呼び出す

num1num2 の変数を宣言し、cin を使ってそれらの値を入力します。swap 関数を呼び出し、それらのアドレスを引数として渡します。

int main() {
       int num1, num2;

       //ユーザーから 2 つの数値を入力する
       cout<<"最初の数値を入力してください : ";
       cin>>num1;
       cout<<"2 番目の数値を入力してください : ";
       cin>>num2;

       //num1 と num2 のアドレスを渡す
       swap(&num1, &num2);

入れ替えた数値を出力する

cout を使って入れ替えた数値を出力します。

//num1 と num2 の入れ替えた値を表示する
cout<<"最初の数値 : "<< num1 << endl;
cout<<"2 番目の数値: "<<num2 << endl;

プログラムをコンパイルして実行する

プログラムを ~/project ディレクトリに main.cpp として保存します。次のコマンドを使ってコードをコンパイルします。

g++ main.cpp -o main &&./main

まとめ

この実験では、C++ でポインタを使って 2 つの数値を入れ替える方法を学びました。2 つの整数型ポインタが指す値を入れ替える swap 関数を宣言して定義し、cincout を使ってそれぞれユーザー入力を取得し、出力を表示しました。