サイトマップ / C言語講座出入り口総目次目次:ポインタ>関数へのポインタ

青い直線

関数へのポインタ

青い直線

[ポインタとメモリブロック]←このソース→[strcmp( )を使う]

/* 関数へのポインタ

今日は、標準ライブラリ関数atexit( )について学びます。

    #include <stdlib.h>
    int atexit(void(*func)(void));

    例:atexit(func);
	
    戻り値
    関数を登録できた場合:0
    関数を登録できなかった場合:0以外

void(*func)(void)は、 見慣れない表現と感じるかも知れません。これは、func( )という関数へのポインタです。atexit( )は引数として関数へのポインタを取ります。

同様に、関数へのポインタを引数とするライブラリ関数にqsort( )があります。

プログラムが正常終了した場合、atexit( )で登録した関数が実行されます。登録できた場合は0を、できなかった時は0以外を返します。

正常終了とは、main( )から抜けるか、exit( )で終了することです。exit( )で終了する場合、正常終了では習慣として'0'を引数にすることになっています

登録する関数は引数をとってはいけません。関数は32個まで登録できます。登録した順序と逆順に関数は実行されます。

ソースプログラムは単純なので、後はコメントを見て理解して下さい。 */

/* ここからソースプログラム */

#include <stdio.h>
#include <stdlib.h>    /* atexit(  )で必要 */

void func1(void);
void func2(void);
void main(void);

  /* atexit(  )に登録する関数 */
void func1(void)
{
    printf("func1(  )を実行しました。\n");
}

  /* atexit(  )に登録する関数 */
void func2(void)
{
    printf("func2(  )を実行しました。\n");
}

void main(void)
{
    atexit(func1);    /* 終了の際、func2が先に実行される */
    atexit(func2);
}

/* ここまでソースプログラム */

[ポインタとメモリブロック]←このソース→[strcmp( )を使う]

青い直線

/* (C) 2000- YFプロ. All Rights Reserved. */    提供:C言語講座−それ自体コンパイルできる教材を使った講座です−

青い直線

サイトマップ / C言語講座出入り口総目次目次:ポインタ>関数へのポインタ