如何在C語言中定義自己的數(shù)據(jù)類型?

在C語言編程中,我們其實(shí)可以打開編程語言的拘束,自己定義自己想要的數(shù)據(jù)類型。只要記住 struct
和 typedef
兩個(gè)關(guān)鍵詞,我們就可以通過C語言中的數(shù)據(jù)結(jié)構(gòu)和共用體來保存非同質(zhì)化的數(shù)據(jù)類型。
定義新的數(shù)據(jù)類型
首先,在C語言在線編譯器(https://lightly.teamcode.com/c)中輸入以下代碼:
完成后,這段代碼會(huì)把 student
預(yù)存為保留詞,那樣我們能創(chuàng)建 student
類型的變量了。
那么這個(gè)新變量究竟是怎樣構(gòu)成的呢?
我們所創(chuàng)建的這個(gè)結(jié)構(gòu)化新變量是通過一系列基礎(chǔ)變量組成的。在上面的代碼中,我們把 char* name
、char* surname
這些變量組成了新的 student
變量中,其實(shí)就是放到內(nèi)存塊的一個(gè)名下。
使用新數(shù)據(jù)類型
我們現(xiàn)在創(chuàng)建好新的 student
變量后,可以在C語言在線編譯器(https://lightly.teamcode.com/c)中為它初始化一些屬性:
在上面的例子中,眼尖的你可能已經(jīng)發(fā)現(xiàn)了我們需要為新數(shù)據(jù)類型的所有變量分配一個(gè)值。除了使用 stu.name
來訪問外,我們還可以使用更短的方式來為這些結(jié)構(gòu)分配值:
你也可以使用不同的順序來設(shè)定值:
共用體 vs 結(jié)構(gòu)
共用體(Union)的說明方式與 struct
相同,但他們卻不太一樣。在共用體中,我們只可以使用同一種類型的數(shù)據(jù)。像這樣:
只有在數(shù)據(jù)類型相同的情況下,才會(huì)使用 union
。我們可以在C語言在線編譯器(https://lightly.teamcode.com/c)中嘗試一下我們的新數(shù)據(jù)類型:
其他小技巧
當(dāng)我們使用?
&
?運(yùn)算符為結(jié)構(gòu)創(chuàng)建一個(gè)指針時(shí),我們也可以使用特殊的?->
?inflix運(yùn)算符來進(jìn)行表達(dá)。在C 語言在線編譯器(https://lightly.teamcode.com/c)中,我們甚至可以像基礎(chǔ)的數(shù)據(jù)類型那樣任意使用我們的新數(shù)據(jù)類型。
我們可以復(fù)制或指定?
struct
?的值,但我們不能對(duì)它們進(jìn)行對(duì)比!