淺談C語言中結(jié)構(gòu)體的初始化
更新時(shí)間:2013年05月23日 15:05:34 作者:
本篇文章是對C語言中結(jié)構(gòu)體的初始化進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
《代碼大全》建議在變量定義的時(shí)候進(jìn)行初始化,但是很多人,特別是新人對結(jié)構(gòu)體或者結(jié)構(gòu)體數(shù)組定義是一般不會(huì)初始化,或者不知道怎么初始化。
1、初始化
typedef struct _TEST_T {
int i;
char c[10];
}TEST_T;
TEST_T gst = {1, “12345”};//可以初始化,設(shè)置i為1,s為一個(gè)字符串.
TEST_T gst = {1};//初始化個(gè)數(shù)少于實(shí)際個(gè)數(shù)時(shí),只初始化前面的成員。
TEST_Tgst = {.c=“12345”};//有選擇的初始化成員。
2、復(fù)合字面量。
gst = (TEST_T){122, "1256"};//這是一個(gè)賦值語句,也可以作為初始化??梢猿霈F(xiàn)在程序的任何地方。
當(dāng)然也可以使用復(fù)合字面量來初始化:
gst = (TEST_T){.i=122, .c="123"};
3、結(jié)構(gòu)體數(shù)組
可以用多個(gè)大括號(hào)括起來:
TEST_T gst[10] = {{},{},{},{}}
也可以初始化其中的一個(gè)元素:
TEST_T gst[10] = {[2]={}, [3]={}}
也可以使用復(fù)合字面量:
TEST_T gst[10] = {[2].i=0, [3].i={}}
為什么要初始化:
1、對局部變量初始化可以防止隨機(jī)值產(chǎn)生的危害。
2、對全局變量初始化可以告訴編譯器,這是一個(gè)定義,而不是一個(gè)聲明。(如果兩個(gè)c中有相同的全局變量定義,且沒有初始化,編譯器會(huì)認(rèn)為第二個(gè)是聲明而不是定義。)
1、初始化
復(fù)制代碼 代碼如下:
typedef struct _TEST_T {
int i;
char c[10];
}TEST_T;
TEST_T gst = {1, “12345”};//可以初始化,設(shè)置i為1,s為一個(gè)字符串.
TEST_T gst = {1};//初始化個(gè)數(shù)少于實(shí)際個(gè)數(shù)時(shí),只初始化前面的成員。
TEST_Tgst = {.c=“12345”};//有選擇的初始化成員。
2、復(fù)合字面量。
gst = (TEST_T){122, "1256"};//這是一個(gè)賦值語句,也可以作為初始化??梢猿霈F(xiàn)在程序的任何地方。
當(dāng)然也可以使用復(fù)合字面量來初始化:
gst = (TEST_T){.i=122, .c="123"};
3、結(jié)構(gòu)體數(shù)組
可以用多個(gè)大括號(hào)括起來:
TEST_T gst[10] = {{},{},{},{}}
也可以初始化其中的一個(gè)元素:
TEST_T gst[10] = {[2]={}, [3]={}}
也可以使用復(fù)合字面量:
TEST_T gst[10] = {[2].i=0, [3].i={}}
為什么要初始化:
1、對局部變量初始化可以防止隨機(jī)值產(chǎn)生的危害。
2、對全局變量初始化可以告訴編譯器,這是一個(gè)定義,而不是一個(gè)聲明。(如果兩個(gè)c中有相同的全局變量定義,且沒有初始化,編譯器會(huì)認(rèn)為第二個(gè)是聲明而不是定義。)
您可能感興趣的文章:
相關(guān)文章
C語言用棧和隊(duì)列實(shí)現(xiàn)的回文檢測功能示例
這篇文章主要介紹了C語言用棧和隊(duì)列實(shí)現(xiàn)的回文檢測功能,結(jié)合具體實(shí)例形式分析了C語言棧和隊(duì)列的定義及使用棧和隊(duì)列進(jìn)行回文檢測的操作技巧,需要的朋友可以參考下2017-06-06c語言實(shí)現(xiàn)數(shù)組循環(huán)左移m位
這篇文章主要介紹了c語言實(shí)現(xiàn)數(shù)組循環(huán)左移m位,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07C++實(shí)現(xiàn)strcpy函數(shù)實(shí)例
這篇文章主要介紹了C++實(shí)現(xiàn)strcpy函數(shù)實(shí)例,步驟講解的很詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,感興趣的朋友跟隨小編一起來研究吧2020-12-12vscode配置遠(yuǎn)程開發(fā)環(huán)境并遠(yuǎn)程調(diào)試運(yùn)行C++代碼的教程
這篇文章主要介紹了vscode配置遠(yuǎn)程開發(fā)環(huán)境并遠(yuǎn)程調(diào)試運(yùn)行C++代碼的教程,本文通過截圖實(shí)例相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04opencv3/C++圖像濾波實(shí)現(xiàn)方式
今天小編就為大家分享一篇opencv3/C++圖像濾波實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12