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