ア | イ | ウ | エ | オ |
カ | キ | ク | ケ | コ |
サ | シ | ス | セ | ソ |
タ | チ | ツ | テ | ト |
ナ | ニ | ヌ | ネ | ノ |
ハ | ヒ | フ | ヘ | ホ |
マ | ミ | ム | メ | モ |
ヤ | ユ | ヨ | ||
ラ | リ | ル | レ | ロ |
ワ | ヰ | ヴ | ヱ | ヲ |
ン |
A | B | C | D | E |
F | G | H | I | J |
K | L | M | N | O |
P | Q | R | S | T |
U | V | W | X | Y |
Z | 数字 | 記号 |
CやC++などにある機能で、ポインターを格納するための変数のこと。
Cは、元々はアセンブリ言語の代わりとして作られた言語であるため、アセンブリ言語相当の機能が必要だった。
従って、アドレス空間を直接的に表現できる、ポインター変数という機能が言語機能として採用されたのである。
アドレス空間には、そのコンピューター、更に言えばCPUの仕様にもよるが、メインメモリー、BIOSなどのROM、装置のI/Oポート(メモリーマップドI/O)などが割り当てられている。
ポインター変数を使えば、CPUから参照できる全てのアドレスを表わすことができるため、これらを直接制御するプログラムを書くことができ便利であるが、その反面誤ったアドレスを操作するとコンピューター全体の動作をおかしくする可能性があり、危険でもある。
読み書きする場合の大きさは、ポインター変数を定義する際に決められる。よくあるのはcharやunsigned charである。
char *p1;
ポインター変数は通常の変数と違い、変数名の前に*を付けて定義する。
また必要に応じて、intであるとか、unsigned longなども使われる。
int *p2;
unsigned long *p3;
通常の数値変数に対する演算(加減乗除など)であれば、例えば1の加算であれば結果も1増える。しかし、ポインター変数の場合には注意が必要である。
char *pc;
long *pl;
++pc;
++pl;
二つの変数の演算結果は同じではない。pc変数はプラス1されるが、pl変数はプラス4される(longが32ビットの環境の場合)。
これは、plが4バイト(32ビット)変数であるlongに対するポインターだからである。ポインターのインクリメントあるいは加算減算は、指定した数だけ値が増減するのではなく、指定した数だけポインターが「進むか戻るかする」のである。
コメントなどを投稿するフォームは、日本語対応時のみ表示されます