C 中的結構(結構體)

2021-09-25 08:14:50 字數 980 閱讀 2016

結構是可以包含資料成員和函式成員的資料結構,這一點和類一樣;下面我們講一下結構與類不同的地方:

1. 結構體是值型別,無需進行堆分配,類是引用型別

2. 結構型別的變數直接儲存資料結構,而類型別的變數儲存對動態分配的物件的引用

3. 類支援繼承,結構體不支援繼承

4. 關鍵字簡單說下,類是class,結構體是struct

下面我們通過**片段來具體看一下結構體:

/// /// point類

///

public class point

}

/// /// 結構體point

///

public struct point

}

借助類,兩個變數可以引用同乙個物件,因此,對乙個變數執行的運算可以會影響到另乙個變數的引用。

借助結構體,每個變數都有自己的資料副本,因此,對乙個變數執行的運算不會影響到兩乙個變數。

下面我們在看一下分別呼叫類point和結構point,輸出的結果有什麼不同:

public class pointexample

public class pointexample

}

通過這個**片段可以看出來,如果point是類,則輸出20,因為a和b引用同一物件。

如果point是結構,則輸出10,因為將a賦值給b建立了新的副本,因此副本不受後面a.x的賦值的影響

總結一下吧:首先,複製整個結構通常比複製物件引用效率更低,因此通過結構進行的賦值和值引數傳遞可能比引用型別的成本更高。

其次,除in、ref和out引數以外,無法建立對結構的引用,這就表示在很多場景中都不能使用結構。

C 中的結構體

c 中的結構體關鍵字typedef可以直接省略,甚至不省略的話,還會提示你省略 原因 c語言的 struct 定義了一組變數的集合,c編譯器並不認為這是一種新的型別 c 中的struct是乙個新型別的定義宣告,所以可以省略typedef,定義變數的時候也可以省略struct,而不用像c語言那樣沒使用...

結構體巢狀結構體 C語言結構體

希望今年夏天的遺憾能成為你秋天的驚喜。網易雲熱評 一 結構體概念 可以簡單理解為把不同資料型別放到一起的陣列 二 結構體宣告與初始化 1 先宣告結構體型別再定義變數 2 同時定義變數 3 直接定義結構體型別變數 include include include include struct aiyou...

C 中結構體的宣告

定義 結構是使用者自定義的值型別 樣式 struct pair struct pair struct pair 可以有結尾分號 注意事項 結構是c 程式設計師用來定義自己的值型別的最普遍的機制。結構比列舉更強大,因為它提供函式 字段 建構函式 操作符和訪問控制。結構成員的預設訪問許可權是privat...