私がオフィスで最近参加したコーディング スタイルのプレゼンテーションでは、変数を定義するときに変数を (既定値に) 割り当てるべきではないと主張していました。代わりに、使用する直前にデフォルト値を割り当てる必要があります。だから、次のようなもの
int a = 0;
眉をひそめるべきです。
明らかに、「int」の例は単純化されていますが、ポインターなどの他の型についても同じことが言えます。
さらに、C99 互換コンパイラが上記のケースで警告を出すようになったことも言及されました。
上記のアプローチは、構造体に対してのみ有用に見えます。つまり、使用前にのみ memset します。これは、構造体がエラー レッグでのみ使用される (または埋められる) 場合に効率的です。
他のすべてのケースでは、コードの作成中および保守中に初期化されていないポインターが原因で多くのバグに遭遇したため、デフォルト値を定義して割り当てることは賢明な方法であることがわかりました。さらに、コンストラクターを介した C++ も同じアプローチ、つまり定義と代入を提唱していると思います。
なぜ(もし)C99標準が定義と割り当てを好まないのか疑問に思っています。コーディング スタイルのプレゼンテーションで推奨されていることを実行する上で、それらはかなりのメリットがありますか?