私は、用語の宣言と定義を以下のように理解しています。
宣言:これは、指定された「名前」と「型」の変数がコード内に存在することをコンパイラに通知するだけです。後で定義/割り当てできるようにする
定義:これは、メモリの適切なスペースを割り当てることによって型のインスタンスが作成されるプロセスです。
int var; //Declaration and Definition-Agreed!!!
extern int var; //Declaration only ?
static int var; //Declaration only ?
私の心は、宣言のみのステートメントとして2番目と3番目のものに同意することを拒否します. 多くの参照で、「extern 変数と static 変数は、メモリ割り当て時に自動的にゼロに初期化される」ためです。そして、次のコードでわかるように。
#include <stdio.h>
int main()
{
static int i;
printf("%d\n",i);
return 0;
}
出力は 0 です。したがって、ここではstatic int i;のように見えます。宣言、定義、および自動初期化ステートメントです。したがって、これに対する正当な理由を追加してください