ポインタ

目次

ポインタとは

ポインタはとてもわかりにくく、C言語が難しいと言われる所以の一つでもあります。
ですがこれがわかれば、出来ることの幅が大きく広がります。

ポインタを簡単に説明するのであれば「変数のアドレスを持った変数」です。
これだけでは何かわからないでしょう。詳しく説明していきます。

ポインタの理解のために、コンピュータのメモリについて理解をしておく必要があるため説明します。
ここまで何気なく使っていた変数や配列について考えましょう。

ソフトウェアであるプログラムはハードウェアであるコンピュータ上で動いています。
具体的には、プログラムで定義した変数はコンピュータ上のメモリ(主記憶装置)上に一時的に保存されています。
つまり、「変数を宣言する」ということは「メモリ上に変数用の領域を確保する」と言い換えられます。
また、同様に「変数に値を代入する」とは、「確保した領域内のデータを書き換える」ことと言えます。

主記憶装置としてのメモリはRAM(Random Access Memory)なのでメモリ内のランダムな位置にデータを保存します。
その保存したデータの位置を表す数列をアドレスといいます。これは1バイトごとに割り振られています。
つまり、「変数のアドレス」とはその変数が保存されている領域の最初の1バイト目のメモリのアドレスのことを指します。

なんとなくイメージは掴めたでしょうか。
ポインタ(pointer)とはある変数の保存されているメモリ上のアドレスを指す、特別な変数のことです。

これが実際にどんなことに役に立つのかは別のページで紹介します。

ポインタの使い方

ポインタ変数の定義は以下のように行います。

【参照元の変数の型】 *【ポインタ変数名】;
【ポインタ変数名】 = 【参照元の変数名】;

また、宣言と代入を一度に行うこともできます。

【参照元の変数の型】 *【ポインタ変数名】 = 【参照元の変数名】;

変数のアドレスを渡すときには変数名の前に&をつけます。
scanf_s()関数もこれを使っています。

scanf_s("%d", &n);

これにより、メモリ上の変数を直接参照することができます。
このようなデータの渡し方を参照渡しといいます。



「ポインタ」への3件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA