Riverside Learning LABO(Skill/Idea/Code)

よりよいシステムのため工学系と人間系の学習下書きメモ

ポインタ基礎の基礎

C言語基礎〜ポインタの基礎〜
ポインタ自体はメモリ上の番地を指す。

                                                                                                                                                      • -

■通常ポインタ

                                                                                                                                                      • -

変数宣言に*を付けたもの.
指している先の型はあらかじめ決める。

例)
int *pi;         // int型のポインタ
int **ppi;       // int型のポインタを指すポインタ
int *i[];        // int型のポインタの配列

                                                                                                                                                      • -

■関数ポインタ

                                                                                                                                                      • -

関数を呼び出す⇒指定番地へジャンプすることを指す.
番地を指しているものが関数名にあたる
例)
int add(int a, int b)        // 加算するだけの関数を定義
{
return (a + b);
}

int x;
int (*func)(int a, int b);   // 関数ポインタを定義
func = add;                  // 関数ポインタに関数の番地を代入
x = func(1, 1);              // 1と1を引数にして関数を呼び出す


■関数ポインタの配列
例)
int x;
int (*func[2])(int a, int b);
func[0] = add;
func[1] = sub;
x = func[0](1, 1);


■関数ポインタを返す関数
関数ポインタの値を返す関数を作成可能。
例)
int (*func(void))(int, int)

                                                                                                                                                      • -

■NULLポインタ

                                                                                                                                                      • -

NULLポインタは0番地を指すポインタ.
書き込み不可領域.

例)
int *p;          // int型のポインタ
p = NULL;        // ポインタをNULLで初期化する

                                                                                                                                                      • -

■void型のポインタ

                                                                                                                                                      • -

void型のポインタは他のどの型のポインタにでもキャスト可能。
関数の引数や返値として使われる。

初期の覚書を見つける
メモリの状態をイメージ