1. 程式人生 > >定義結構體時的初始化默認值

定義結構體時的初始化默認值

sans post 建議 src pre 問題: -h ber 保險

結構體變量定義時的初始化問題:

默認值同變量一樣。int型的為0,指針型的為“NULL”------------並非整個結構體為NULL。當中的int型還是有值0的,僅僅是指針型的為NULL

驗證一下:


#include "stdafx.h"
struct stu
{
	int data;
	char *name;
}boy1,girl={102,"xiaom"};


int _tmain(int argc, _TCHAR* argv[])
{
	printf("Number=%d\nName=%s\n",boy1.data,boy1.name);
	printf("Number=%d\nName=%s\n",girl.data,girl.name);
	boy1=girl;
	printf("Number=%d\nName=%s\n",boy1.data,boy1.name);
	printf("Number=%d\nName=%s\n",girl.data,girl.name);
	return 0;
}
輸出結果為:
技術分享


同理。鏈表的節點假設僅僅是定義而未賦值的話,它的data為0,指針為null


可是,初始化的值是不確定的,須要自己清空。
通常是會初始化為0。但建議不要依賴自己主動初始化。自己動手清空,比較保險。

全局的變量會自己主動清空,可是局部的話,還是自己手動清空的。


另外。假設僅僅是聲明的話,編譯器是不會為此聲明分配空間的

例如以下:


struct stu
{
	int data;
	char *name;
};

這樣是沒有初始值的



定義結構體時的初始化默認值