C 結構的學習

2021-09-21 05:15:07 字數 1809 閱讀 7018

結構是程式設計師定義的資料型別,非常的類似於類。有資料成員和函式成員。

但是也有區別:

1)類是引用型別,而結構是值型別;

2)結構是隱式密封的,不能被派生;

語法宣告與類相似:

//結構的宣告

struct

structname 

看下邊的示例**來演示c#結構的使用方法:

static

void

main(

string

args) 

,",first.x,first.y); 

console.writeline("second:,"

,second.x,second.y); 

console.writeline("third:,"

,third.x,third.y); 

console.readkey(); 

} struct

point 

結構是值型別

1)結構型別的變數不能使null;

2)兩個結構變數不能引用同一物件

static

void

main(

string

args) 

class

c****** 

struct

****** 

先建立乙個c******類,和乙個******結構

在main()分別對它們例項化宣告兩個個變數後,cs1和cs2分別指向在堆中的引用,而ss1和ss2分別在棧中分配空間並儲存。

把乙個結構賦值給另外乙個結構,就是從乙個結構中把值復值給另外乙個結構。與類不同的是,複製類變數時只有引用被複製。

如上面的**,類賦值結束後,cs2和cs1指向堆中的同乙個物件。但是在結構賦值結束後,ss2成員的值和ss1成員的值相同。

結構中的建構函式和析構函式

語言隱式的為每個結構提供乙個無引數的建構函式。這個建構函式把結構的每個成員設定為該型別的預設值,引用成員被設定成null

預定義的無引數建構函式對每個結構都存在,而且不能刪除或者重新定義。但是可以建立另外的建構函式,只要他們有引數。這和類不同,對於類,編譯器只在沒有其它建構函式宣告時提供隱式的無引數建構函式。

要呼叫乙個建構函式,包括隱式的無引數建構函式,要使用new運算子。即使不從堆中分配記憶體也使用new運算子。

如下面的例項:

static

void

main(

string

args) 

,",s1.x,s1.y); 

console.writeline(","

, s2.x, s2.y); 

console.readkey(); 

} struct

******  } 

也可以不適用new運算子建立結構的例項。但是,有一些限制:

1)不能使用資料成員的值,直到顯示的設定它

2)不能呼叫任何函式成員,直到所有資料成員已經被賦值

static

void

main(

string

args) 

,", s1.x, s1.y);

//編譯錯誤,s1.x, s1.y還沒有被賦值

s2.x = 50; 

s2.y = 10; 

console.writeline(","

, s2.x, s2.y); 

console.readkey(); 

} struct

******  

C 結構的學習

結構是程式設計師定義的資料型別,非常的類似於類。有資料成員和函式成員。但是也有區別 1 類是引用型別,而結構是值型別 2 結構是隱式密封的,不能被派生 語法宣告與類相似 結構的宣告 struct structname 看下邊的示例 來演示c 結構的使用方法 static void main stri...

C 學習 結構

結構 1 是值型別,不是引用型別。它們儲存在堆疊中或儲存為內聯 如果他們是另乙個物件的一部分 2 結構不支援繼承 a 其預設建構函式不允許替換 是隱式給出的無參建構函式,即使提供了其他帶引數的建構函式,也是如此 不允許在字段定義時賦值,而是呼叫預設建構函式時賦值0 b使用結構 可以指定字段如何在記憶...

C 學習 結構

1.建立乙個控制台應用程式 使用writeline方法輸出 hello world!字串 static void main string args 程式的main方法 2.c 程式結構大體可以分為注釋 命名空間 類 main方法 識別符號 關鍵字和語句。2.1 c 程式是利用命名空間組織起來的。命名...