string 與 char 的區別

2021-09-08 22:33:15 字數 384 閱讀 9065

1、char是字元型別

2、string是字串型別

雖然一字之差,但其本質是很大的。

1. char屬於基礎型別(c++),在c#中它屬於值型別(value type)。char型別的長度是固定的,c++中它可能是1個位元組,或者2個位元組(取決於是否為unicode char),而在c#中,它永遠是2個位元組。

2. string是乙個模板型別,也就是乙個class(c++)。在c#中它屬於引用型別(reference type)。string的長度是無法明確取得的。也就是無法通過sizeof來取得,因為它不是乙個基礎型別,它本身並不固定長度,而取決於內部包含的 字元。

c語言中 string 相當 char陣列,而且,最後一位位"\0",即字串結束標誌

char 與char 的區別

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

char 與 char 的區別

hello world 作為靜態字串實際上儲存在資料區,但寫程式的人不知道這個位址,而程式本身知道。當某一函式以 方式使用此靜態字串時,實際上相當於 char p 12 strcpy p,hello world p 12 是在棧裡臨時分配的。雖然p指向的內容是 hello world 但是這是複製品...

關於char 與char 的區別

char a在執行時賦值,值會從靜態區賦值到函式的棧中,對它進行修改不會產生任何問題。char a在編譯時就確定了,a指向靜態區中的值,沒有賦值到函式棧中,因此對指標的內容進行修改會產生錯誤。和許多文章一樣,還是先來了解一下 乙個由 c c 編譯的程式占用的記憶體分為以下幾個部分 1 棧區 stac...