1. ホーム
  2. c++

[解決済み] 初期化」とは具体的にどのようなことですか?

2022-03-07 01:57:25

質問

私のcsappの本には、グローバル変数とスタティック変数が初期化されている場合、それらはELF再配置可能オブジェクトファイルの.dataセクションに含まれると書いてあります。

そこで質問なのですが、もし foo.c のコードには

int a;
int main()
{
    a = 3;
}`

example.c が含まれています。

int b = 3;
int main()
{
...
}

だけなのでしょうか? b は、初期化されているとみなされますか?つまり、初期化とは宣言と定義が同じ行にあることを指すのでしょうか?

どのように解決するのですか?

そのまんまの意味です。初期化された静的記憶期間オブジェクトは、main関数が呼ばれる前にそのinit値が設定されます。初期化されていないものは、ゼロになります。この文の後半部分は実際には実装依存で、実装はアーカイブされる方法の完全な自由を持っています。

キーワードを付けずに変数を宣言した場合 extern 常に同じように定義します。