3

char配列がグローバルまたは静的ローカルの場合、その要素は\ 0に初期化されることは知っていますが、char配列が外部変数の場合はどうなりますか?

4

4 に答える 4

3

変数がexternとして宣言されているが非グローバルである場合、その変数も同じ初期化処理を受け取ります。例えば

namespace A { extern int x; int x;}

この非グローバル変数はゼロに初期化されます。すべての名前空間スコープ変数がこの処理を受け取ります。

于 2012-12-01T14:02:30.760 に答える
3

extern変数は単なる宣言です。変数は、それを定義したモジュールで初期化されます。そのモジュールでは、変数はグローバルであるため、ゼロで初期化されます。

于 2012-12-01T13:52:49.110 に答える
2

extern単なる宣言です。
変数が初期化されるかどうかは、定義によって異なります。

また、変数の値は初期化のタイプによって異なります。C ++標準では、次の3種類の初期化が定義されています。

  • ゼロ初期化
  • デフォルト-初期化
  • 値-初期化

C++03標準8.5/5はそれぞれを適切に定義します。

良い読み物:

定義と宣言の違いは何ですか?

于 2012-12-01T13:52:47.660 に答える
1

キーワードは変数が存在することを宣言するexternだけで、その値を定義しません。グローバルスコープのため、0に初期化されました

于 2012-12-01T13:54:46.937 に答える