
ここでは C言語のポインタを使って、渡した2つの変数の中身を交換(=スワップ; swap)する方法を確認します。
swap は、例えばデータの並べ替え(ソート)等、様々なアルゴリズムの中で使用されます。 また swap 関数を作りながら、ポインタの有用な使い方である、参照渡し(ポインタ渡し)について理解を深めていきます。
プレイヤーの体力と敵キャラの体力が入れ替わってしまうシーンをイメージしてプログラミングしてみます。
体力を swap して、中身を入れ替えています。
#include <stdio.h>
void swap(int *x, int *y) {
int temp = *x;
*x = *y;
*y = temp;
}
int main() {
int playerHp = 100;
int enemyHp = 50;
printf("あなたの体力:%d\n", playerHp);
printf("闇魔法使いの体力:%d\n", enemyHp);
printf("闇魔法使いは体力交換の魔法を唱えた!\n");
swap( &playerHp, &enemyHp);
printf("あなたの体力:%d\n", playerHp);
printf("不思議な魔法使いの体力:%d\n", enemyHp);
}
自作の swap 関数を作成しています。
swap 関数は二つの int 型ポインタへの引数を持っており、 変数 x と y のメモリアドレスの中身を交換していますね!
二つの変数の中身を交換するにあたって、下のように一時変数 temp を使っています。
今回は int 型の交換を意図していますが、 例えば float 型や short 型を交換したければ、引数の型と一時変数を float型ポインタ、 short 型ポインタに 変更してあげればOKです!
swap 関数は様々なアルゴリズムで使用される非常に便利な機能です!
今回はここまでです!おつかれさまでした。
(英語)MIT - 6.087 Practical Programming in C, Problem Set 4 Solutions - swap
更新日 | 更新内容 |
---|---|
更新なし |
コメント、ありがとうございます。
ごめんなさい。エラーでうまく送信できませんでした。ご迷惑をおかけします。しばらくおいてから再度送信を試していただくか、以下から DM などでご連絡頂ければと思います。
Twitter:@NodachiSoft_jpお名前:以下の内容でコメントを送信します。よろしければ、「送信」を押してください。修正する場合は「戻る」を押してください
お名前: