サイトマップ / 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言語講座−それ自体コンパイルできる教材を使った講座です−