定義結構體時的初始化默認值
阿新 • • 發佈:2017-06-27
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; };
這樣是沒有初始值的
定義結構體時的初始化默認值