C言語のinit関数の使用方法を教えてください。
init関数は、プログラムが開始されたときに自動的に呼び出され、いくつかの初期化処理を行うために使用されます。
init関数の主な用途は2つあります。
- グローバル変数の初期化前に処理を実行する。C言語では、グローバル変数の初期化順序は決まっていませんが、init関数という関数を定義することで、グローバル変数の初期化前に処理を実行することができます。例えば、init関数の中でファイルを開きコンフィグ情報を取得し、取得したコンフィグ情報をグローバル変数に代入することができます。
例を下さい
#include <stdio.h>
int global_var = 0;
void init() {
// 在全局变量初始化之前执行一些操作
printf("Performing initialization...\n");
global_var = 10;
}
int main() {
// 调用init函数
init();
// 输出全局变量的值
printf("global_var = %d\n", global_var);
return 0;
}
別の言い方をすると、
Performing initialization...
global_var = 10
- 静的変数の初期化前に処理を実行する:静的変数の初期化は、関数が最初に呼び出されたときに行われ、init関数を書けば静的変数の初期化前に処理を行うことができます。init関数に静的変数へメモリを割り当てたり、関数が最初に呼び出される前に完了する必要がある処理を実行するといった処理を定義できます。
サンプル:
#include <stdio.h>
void func() {
// 静态变量的初始化是在函数第一次被调用时执行的
static int static_var = 0;
printf("static_var = %d\n", static_var);
}
void init() {
// 在静态变量初始化之前执行一些操作
printf("Performing initialization...\n");
// 分配内存给静态变量
func();
}
int main() {
// 调用init函数
init();
// 再次调用func函数
func();
return 0;
}
ネイティブの日本語で言い換えると
Performing initialization...
static_var = 0
static_var = 0
init関数は、プログラム起動時に自動的に呼ばれ、手動で呼び出す必要はありません。また、init関数の定義と宣言は任意の場所に記述できますが、可読性のため、通常はグローバル変数や静的変数の定義よりも前にinit関数の定義と宣言を記述します。