C 讀檔案,結構和類區別,棧和堆區別

2021-09-05 10:11:15 字數 1516 閱讀 9106

//讀取電腦中文字文件的內容,並將其中超過8個字的書名從第六個索引開始用省略號表示,+|作者

string path = @"g:\桌面\book.txt"

;string[

] text = file.

readalllines

(path, encoding.default)

;//讀取檔案

for(

int i =

0; i < text.length ; i++

),stringsplitoptions.removeemptyentries )

;//清除空格,放置在乙個陣列

if(str[0]

.length >8)

else

}

static

void

main

(string[

] args)

,",p1.age, p1.gender)

; console.

writeline

(","

,p2.age,p2.gender )

; console.

readkey()

;}public struct person//為結構時,輸出結果為20,男;為類時,輸出結果為100,女;

set

} private char _gender;

public char gender

set

} private int _age;

public int age

set

}}

結構(struct)

類(class)

棧、堆值型別的值在棧上

引用型別棧上存位址,堆上存值

建構函式

預設有乙個無參的建構函式,在結構中在寫乙個有引數的建構函式,這時,結構上有兩個建構函式,乙個有參乙個無參

預設有乙個無參的建構函式,這時,在類中寫乙個有引數的建構函式,預設的無參建構函式就沒有了

建構函式中引數個數

在結構中寫建構函式所有欄位都要寫全

在類中寫構造函式引數列表中引數個數可以不確定

是否可為null值

值型別不可為null值

引用型別可為null值

舉例分類

int,long,float,char,bool,enum,struct

system.object,string,class,inte***ce,int,string

棧(stack)

堆(heap)

分配記憶體空間

棧是編譯期間就分配好的記憶體空間,**中必須對棧的大小有明確定義

堆是程式執行期間動 態分配的記憶體空間,可以根據程式運**況確定要分配的堆記憶體的大小

申請方式

由系統自動分配。 例如,宣告在函式中乙個區域性變數 int a; 系統自動在棧中為a開闢空間

需要程式設計師自己申請,並指明大小

C 堆和棧區別

c 中,記憶體分為5個區 堆 棧 自由儲存區 全域性 靜態儲存區和常量儲存區。棧 是由編譯器在需要時自動分配,不需要時自動清除的變數儲存區。通常存放區域性變數 函式引數等。堆 是由new分配的記憶體塊,由程式設計師釋放 編譯器不管 一般乙個new與乙個delete對應,乙個new與乙個delete對...

堆和棧區別

一 預備知識 程式的記憶體分配 乙個由c c 編譯的程式占用的記憶體分為以下幾個部分 1 棧區 stack 由編譯器自動分配釋放 存放函式的引數值,區域性變數的值等。其 操作方式類似於資料結構中的棧。2 堆區 heap 一般由程式設計師分配釋放,若程式設計師不釋放,程式結束時可能由os回 收 注意它...

堆和棧區別

管理方式 棧由編譯器自動管理 堆由程式設計師控制,使用方便,但易產生記憶體洩露。生長方向 棧向低位址擴充套件 即 向下生長 是連續的記憶體區域 堆向高位址擴充套件 即 向上生長 是不連續的記憶體區域。這是由於系統用鍊錶來儲存空閒記憶體位址,自然不連續,而鍊錶從低位址向高位址遍歷。空間大小 棧頂位址和...