結(jié)構(gòu)體中包含另一個結(jié)構(gòu)體 結(jié)構(gòu)體可以嵌套定義嗎?
結(jié)構(gòu)體可以嵌套定義嗎?可以在類定義中嵌套結(jié)構(gòu)。這里有幾個例子要解釋:對于聲明的(類外)結(jié)構(gòu)類型,在類定義中嵌入結(jié)構(gòu)變量沒有問題。也可以在類定義中直接定義結(jié)構(gòu)類型,同時聲明結(jié)構(gòu)變量,但此結(jié)構(gòu)類型不能在類
結(jié)構(gòu)體可以嵌套定義嗎?
可以在類定義中嵌套結(jié)構(gòu)。這里有幾個例子要解釋:
對于聲明的(類外)結(jié)構(gòu)類型,在類定義中嵌入結(jié)構(gòu)變量沒有問題。
也可以在類定義中直接定義結(jié)構(gòu)類型,同時聲明結(jié)構(gòu)變量,但此結(jié)構(gòu)類型不能在類之外使用。
不允許只定義類中的結(jié)構(gòu)類型而不同時聲明結(jié)構(gòu)變量(在結(jié)構(gòu)定義中也是如此)。
在大多數(shù)情況下,我們建議將struct type的定義放在類之外,這樣定義的struct就可以在更多的地方(類之外)使用,而不會出現(xiàn)邏輯歧義和編譯錯誤。
事實上,類是C語言結(jié)構(gòu)在C語言中的擴展。在C語言中,結(jié)構(gòu)可以看作是最簡單的類“類嵌套”是C面向?qū)ο蟮囊环N應(yīng)用技巧,用于接口封裝(隱藏)和成員共享。但是,它與嵌套結(jié)構(gòu)關(guān)系不大。如果你感興趣,你可以讀相關(guān)的書。
此外,還有兩種形式的結(jié)構(gòu)定義,一種帶有typedef關(guān)鍵字,另一種沒有typedef關(guān)鍵字。這兩個定義是不同的。簡而言之,typedef聲明了一個“變量類型”。沒有typedef,它直接聲明結(jié)構(gòu)變量。具體應(yīng)用差異請參考結(jié)構(gòu)聲明相關(guān)書籍和章節(jié)。
C語言,如何在結(jié)構(gòu)體中給嵌套的結(jié)構(gòu)體賦值?
要為結(jié)構(gòu)賦值,請先定義結(jié)構(gòu),然后分別為其成員賦值。例如,
#include<studio。H>
結(jié)構(gòu)?學生
{
智力?Num
字符?Name[10
}
無效?Main()
{
結(jié)構(gòu)?學生?S
printf(“輸入學號:n”)
scanf(%d”)&安培數(shù))//Scanf assign to num member of struct
printf(“enter name:n”)
Scanf(“%s”,&安培名稱)
Printf(“輸入信息為:學號:%D,姓名::%sn”,s.num?,s.name)
}運行屏幕截圖: