字元串在內存中的存儲
❶ 字元串hello在內存中占幾個儲存單位
你好,字元串hello在內存中佔5個儲存單位,也就是5個位元組,這是ASCII字元的屬性,hello五個字母都是單位元組字元,按照ASCII碼的規定,每個字元佔一個位元組。
現在計算機都是32位或者64位,但計算機的傳統並沒有變,位元組的概念也一直沿用,ASCII碼也依然是原來的字元集,不同的是計算機速度趕快了,處理能力更強大了。
❷ 字元串在內存中怎麼儲存
字元串是以ASCII字元NUL結尾的字元序列。
ASCII字元NUL表示為\0.字元串通常存儲在數組或者從堆上分配的內存中。只是,並不是全部的字元數組都是字元串,字元數組可能沒有NUL字元。
字元數組也用來表示布爾值等小的整數單元,以節省內存空間。
C中有兩種類型的字元串:
單位元組字元串
由char數據類型組成的序列
寬字元串
由wchar_t數據類型組成的序列
wchar_t數據類型用來表示寬字元,要麼是16位寬。要麼是32位寬。這兩種字元串都以NUL結尾。能夠在string.h中找到單位元組字元串函數。而在wchar.h中找到寬字元串函數。寬字元主要用於非拉丁字元集,對於支持外語的應用程序非常實用,
字元串的長度是字元串中除了NUL字元外的字元數。為字元串分配內存的時候,要記住為全部的字元加上NUL字元分配足夠的空間。
❸ 存儲字元串「a」需要至少佔用存儲空間中的幾個位元組
存儲字元串「a」需要至少佔用存儲空間中的2個位元組。
字元串是用雙引號(「」)括起來的由零個或多個字元組成的有限序列。字元串在存儲上是使用單個字元代碼的數組,每個字元佔用一個位元組。由於每個字元串尾自動加一個『\0』作為字元串結束標志。
所以字元串「a」的長度使用單字元'a'和單字元『\0』共2個單字元代碼的數組進行存儲,即佔用存儲空間中的2個位元組。
(3)字元串在內存中的存儲擴展閱讀:
在程序設計中,字元串通常以串的整體作為操作對象,如:在串中查找某個子串、求取一個子串、在串的某個位置上插入一個子串以及刪除一個子串等。兩個字元串相等的充要條件是:長度相等,並且各個對應位置上的字元都相等。
由於在程序中經常出現大量String對象的值相同的情況,造成內存空間的冗餘。為了有效地利用內存,預留了一塊特殊的內存區域,稱為String常量池。當編譯器遇到一個String常量時,先檢查常量池中是否存在值相同的String常量,如果存在,則把該常量的引用指向常量池中的String常量。
❹ 匯編語言字元竄存儲
字元串在內存中以位元組(byte)為單位存儲,字元串包含多少字元就需要多少byte來存。匯編中定義一個字元串如下:
myStringBYTE"ABCDEF",0;常以0作為字元串的結尾
內存中存儲順序如圖所示,從箭頭開始,依次向下。假設第一個地址是0000h,下一個byte的地址就是00001h,依次類推。內存中存儲的是字元的二進制編碼,比如A41h=01000001b
希望對LZ有用~
PS:2L說的是英特爾架構CPU的「小尾順序」規則,其他一些CPU可能採用「大尾順序」
比如定義一個字(WORD):myWordWORD1234h如果是小尾順序,那低地址存34h,高地址存12h,如圖中0000h的地方存34h,00001h的地方存12h。大尾順序則相反~(汗。。。。但願不顯得太羅嗦)