ポインタ
ポインタ (pointer) は他の変数のアドレスを格納するための 2 バイト (near) または 4 バイト (far) の派生型で、演算子「*」を使って宣言します。
例 |
int a = 1;
|
| int* ptr = &a;
| // ptr ← a のアドレス
|
| int b = *ptr;
| // b ← ptr のポイント先 = a の値
|
| int** pp = &ptr;
| // pp ← ptr のアドレス
|
| int c = **pp;
| // c ← pp のポイント先のポイント先 = a の値
|
ポインタの値は加減算を行うことができます。1 を加減算すると、ポイント先の型のサイズだけ値が増減するので注意してください。
例 |
void func ( char* ptr1, long* ptr2 ) {
|
| ptr1++;
| // ptr1 の値が 1 増える
|
| ptr2++;
| // ptr2 の値が 4 増える
|
| ptr1 += 10;
| // ptr1 の値が 10 増える
|
| ptr2 += 10;
| // ptr2 の値が 40 増える
|
| }
|
以下にさまざまな例を示します。
例 |
char* ptr;
| // char データを指すポインタ
|
| int* ptr2;
| // int データを指すポインタ
|
| char a[10];
|
| ptr = a;
| // 有効
|
| ptr2 = a;
| // ポイント先の型が違うため、警告される
|
| char** ptr3;
| // ポインタを指すポインタ
|
| char* ptr4[10];
| // ポインタの配列 (10 個の char* ポインタ)
|
| char (*ptr5)[10];
| // 配列へのポインタ
|
|
|
| char* p1;
|
| p1++;
| // 1 増加
|
| short* p2;
|
| short* p2b = p2;
|
| p2++;
| // 2 増加
|
| p2 += 3;
| // 3 * sizeof(short) = 6 増加
|
| int d = p2 - p2b;
| // d = 8 / sizeof(short) = 4
|
|
|
| void (*func)( int );
| // 関数へのポインタ
|
| (*func)( 12 );
| // ポインタを介した関数呼び出し
|
| func( 12 );
| // こう書いても同じ
|
|
Copyright © Tama Software Ltd, 1999-2012.
|
←
→
目次
索引
|