1

このような構造体を定義しました

Struct rectangle{

int x;
int y;
int z;

};

次に、メイン メソッドで変数を割り当てます。

void main(int argc, const char *argv[])

{

   for(i=0;i<20;i++)

   {

     rectangle[i].x = 20;
     rectangle[i].y = 10;

    }

}

しかし、いつでも構造体の「z」変数を割り当てることはありません。これをしてもいいですか?私は非常にばかげたことを尋ねていないことを願っています!!

前もって感謝します!

4

4 に答える 4

6

はい、大丈夫です。使用しようとするrectangle[i].zと、未定義の動作が発生しますが、*使用しない限り問題ありません。


*rectangleがグローバル/静的配列として宣言されている場合を除き、その場合、そのすべてのメンバーは暗黙的にゼロに初期化されます。

于 2013-02-07T15:36:43.700 に答える
4

あなたはそれをすることが許されています。ただし、メンバーの値z不定です。
したがって、値を割り当てずに使用すると、Undefined Behavior(UB)になります。

ただし、構造体オブジェクトがグローバルまたは静的オブジェクトの場合zは、暗黙的に初期化されるため0、UB について気にする必要はありません。

于 2013-02-07T15:36:47.720 に答える
0

前述の通り、損はしません。スタックの前にここにあったものを確認するために、rectangle[i].z の値を出力することもできます :)。

于 2013-02-07T15:38:49.027 に答える
0

はい、宣言せずに逃げることができますzが、 z の値は未定義になります。

構造体にデフォルトのコンストラクターを使用することrectangle zを検討し、グローバルまたは静的として定義すると初期化される0ため、それ以外の場合の値について心配する必要はありません。

于 2013-02-07T15:50:52.043 に答える