構造体を定義するときの初期化のデフォルト値

607 ワード

構造体変数定義時の初期化の問題:
デフォルト値は変数と同じで、int型は0、ポインタ型は「NULL」---------構造体全体がNULLであるわけではありません.int型には0の値がありますが、ポインタ型はNULLです.
#include 
using namespace std;

struct
{
   int a;
   int b;
   int *c;
}t = { 1 };

int main()
{
	printf("%d %d %d",t.a,t.b,t.c);
        return 0;
}

出力結果:1 0
ただし、初期化の値は不確定で、自分でクリアする必要があります.通常は0に初期化されますが、自動初期化に頼らず、自分でクリアして保険をかけることをお勧めします.
宣言のみの場合、コンパイラはこの宣言にスペースを割り当てることはありません.
struct my
{
	int a;
	int b;
	int *c;
};

これで初期値はありません
変換元:https://blog.csdn.net/xueruifan/article/details/46443645