[解決済み] array[100] = {0}で配列全体を0にする方法とは?
2022-05-15 05:53:31
質問
コンパイラはどのように
char array[100] = {0};
? その背後にある魔法は何ですか?
内部でコンパイラがどのように初期化しているのか知りたかったのです。
どのように解決するのですか?
魔法ではありません。
このコードのC言語での動作は、C言語仕様書の6.7.8.21節に記載されています( C仕様のオンラインドラフト ): 指定された値を持たない要素に対して、コンパイラはポインタをNULLに、算術型を0に初期化します (そしてこれを集約に再帰的に適用します)。
C++ におけるこのコードの動作は、C++ 仕様書のセクション 8.5.1.7 で説明されています ( C++ 仕様のオンライン ドラフト ): コンパイラは指定された値を持っていない要素を集約して初期化します。
また、C++(Cではない)では、空の初期化リストを使用することができ、コンパイラーは配列のすべての要素を集約して初期化することに注意してください。
char array[100] = {};
これを実行したときに、コンパイラがどのようなコードを生成するかについては、この質問を見てください。 配列0-初期化からの奇妙なアセンブリ
関連
-
[解決済み】std::cin.getline( ) vs. std::cin
-
[解決済み] explicit キーワードの意味は?
-
[解決済み] 文字列の単語を反復処理するにはどうすればよいですか?
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] 1ビットのセット、クリア、トグルはどのように行うのですか?
-
[解決済み] C言語では「?」演算子は何をするのですか?
-
[解決済み] コピーアンドスワップ慣用句とは?
-
[解決済み] C++11では、標準化されたメモリモデルが導入されました。その意味するところは?そして、C++プログラミングにどのような影響を与えるのでしょうか?
-
[解決済み] 配列の長さを求めるにはどうしたらよいですか?
-
[解決済み] Intel CPU の _mm_popcnt_u64 で、32 ビットのループカウンターを 64 ビットに置き換えると、パフォーマンスが著しく低下します。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】coutはstdのメンバではない
-
[解決済み】C++でint型に無限大を設定する
-
[解決済み】抽象クラス型の無効なnew-expression
-
[解決済み】IntelliSense:オブジェクトに、メンバー関数と互換性のない型修飾子がある
-
[解決済み】オブジェクト引数のない非静的メンバ関数の呼び出し コンパイラーエラー
-
[解決済み】クラステンプレートの使用にはテンプレート引数リストが必要です
-
[解決済み】クラスのコンストラクタへの未定義参照、.cppファイルの修正も含む
-
[解決済み] 配列のベクトルを扱う正しい方法
-
[解決済み】Eclipse IDEでC++エラー「nullptrはこのスコープで宣言されていません」が発生する件
-
[解決済み】c++で.txtファイルから2次元の配列に読み込む