C 結構體簡要

2021-09-29 17:28:06 字數 1014 閱讀 8515

一般來說使用物件有很大的靈活性。但是當我們僅僅需要一種嬌小的資料結構時,使用類的形式會帶來一定的效能損失,儘管這種損失在託管堆的優化後比較小。

如下所示:

class

dimensions

我們可以定義乙個類來儲存兩個字段,長度和寬度。這樣也是可以的,但是有時考慮效能方面我們不一定需要全部的類的效能。這是就可以用結構。

為此我們定義如下**:

//只需要將class換成struct

struct dimensions

c#中的結構體與c/c++不同,它可以有方法、甚至是屬性。

struct dimensions

public

double diagonal //屬性

}}

結構體是值型別不是引用型別,它儲存在棧中和其他型別一樣的生存週期。結構不支援繼承。

結構的使用:

dimensions point =

newdimensions()

;point.length=3;

point.width=

6;

格外注意由於結構體是值型別,所以new運算符合類中的new不一樣,類中的new是分配堆中記憶體並呼叫相應的建構函式,返回物件的引用。而結構體中的new並不分配記憶體,而只呼叫建構函式。初始化相應的字段。

所以下面的形式也是正確的:

dimensions point;

//此時就已經分配了位址只不過沒有呼叫建構函式而已

point.length=3;

point.wigth=

6;

如果dimensions是個類的話,上述的寫法肯定會有錯誤。因為類的物件例項化必須用new或賦值另個物件的方式。

由於結構時值型別,且資料格式立體所以結構當做引數傳輸時效能損耗比較大,最好的解決方法就是將結構的引用作為引數來傳輸。

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

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

C 結構體共用體

12 c 中陣列初始化的特點 初始話陣列可以省略等號 初始話內容為空 不可縮窄操作 double people double people int number 不通過,因為浮點到整形為縮窄13 sizeof 計算陣列時候會比strlen 多計算乙個0位元組 14 字串的初始化和賦值,string ...

C語言結構體和結構體排序

結構體 結構體是一種構造資料型別 構造資料型別包括 陣列型別 結構體型別 共用體型別 定義 把不同的資料組合成乙個整體。結構體的一般形式struct 結構體名稱 struct是關鍵字 不要忘記這裡的分號定義結構體的三種方法 第一種 先定義結構體型別,在定義變數名 struct student str...