《C語言筆記 字串和字元陣列》

2021-10-10 14:12:13 字數 2205 閱讀 3595

一,c語言使用指標來管理字串

1,c語言本身是沒有string型別的,c語言中的字串型別是通過字元指標來間接實現的。

5,'\0'是乙個ascii字元,其實就是編碼為0的那個字元(真正的0,和數字0是不同的,數字0的ascii值是48)。要注意區分 '\0'   、0 、  '0'。(0等於'\0',『0』等於48)。

1 #include2 #include3 

4 int main(void)

5 ;7 8 printf(" a[4] = %c \n",a[4]); //顯示為空什麼都沒有,也就是'\0'字元

9 printf(" a[4] = %d \n",a[4]); //顯示0,字元'\0'的十進位制數為0

10

11 a[4] = '0';

12 printf(" a[4] = %c \n",a[4]); //顯示0,顯示的是字元0

13 printf(" a[4] = %d \n",a[4]); //顯示48,字元0的十進位制數為48

14 a[4] = 48;

15 printf(" a[4] = %c \n",a[4]); //顯示0,顯示的是字元0

16 printf(" a[4] = %d \n",a[4]); //顯示48,字元0的十進位制數為48

17 printf(" sizeof(a) = %d \n",sizeof(a)); //顯示10,陣列a所佔的總空間

18 printf(" strlen(a) = %d \n",strlen(a)); //顯示0,因為陣列的第0個元素為字元'\0',以此便判定了字串的結束

19 a[0] = 48;

20 printf(" strlen(a) = %d \n",strlen(a)); //顯示1,因為陣列的第1個元素為字元'\0',以此便判定了字串的結束

21 a[1] = '0';

22 printf(" strlen(a) = %d \n",strlen(a)); //顯示2,因為陣列的第2個元素為字元'\0',以此便判定了字串的結束

23 }

二,字串指標和字串本身

1,指向字串的指標和字串本身是分開的兩個東西。

2,比如說char *p = "linux",p本質上是乙個字元指標,佔四個位元組(32位系統),「linux"分配在**段佔6個位元組,實際上總共耗費了10個位元組。

3,這10個位元組中,4位元組的指標p叫做字串指標,5個位元組用來存放linux,這5個字元的記憶體才是真正的字串,最後1個位元組用來存放'\0'的記憶體就是字串的結束標誌。

三,儲存多個字元的兩種方式:字串和字元陣列

1,字元陣列char a = "linux";來說,定義了乙個陣列a,陣列a佔6個位元組,右值」linux"本身只存在於編譯器中,編譯器將用它來初始化陣列a後丟棄掉,記憶體中是沒有「linux"這個字串的,這句相當於 char a = ;

2,字串char *p = 」linux";定義了乙個字元指標p,p佔四個位元組,分配在棧上,同時定義了乙個字串"linux",分配在**區;然後把**段的字串的首位址賦值給p。

3,字元陣列和字串有本質的區別。字元陣列本身是陣列,陣列自身自帶記憶體空間,可以用來存放東西;而字串本質上是乙個指標,本身永遠只佔四個位元組,而且這四個位元組還不能用來儲存有效資料,所以只能把有效資料存到別的地方去,然後把位址存在p中。

4,總的來說,就是字元陣列自己存那些字元;字串一定需要額外的記憶體來存那些字元,字串本身只存真正那些字元所在的記憶體空間的首位址。 

#include#includeint main(void)

四,sizeof關鍵字和strlen函式

1,sizeof是c語言的乙個關鍵字,是乙個運算子。用來返回乙個型別或者變數所佔的記憶體位元組數。

2,strlen是乙個c語言的庫函式,這個庫函式宣告在string.h中,原型是:size_t strlen(const char *s);這個函式接受乙個字串的指標,然後返回這個字串的長度(位元組為單位)。返回的長度是不包含字串結尾的'\0'的。

3,sizeof(陣列名)得到的永遠是這個陣列整個的大小,和陣列中有無初始化,初始化多少是沒有關係的;strlen是計算字串長度的,只能傳遞合法的字串進去才有意義。

《C語言筆記 字串和字元陣列》

一,c語言使用指標來管理字串 1,c語言本身是沒有string型別的,c語言中的字串型別是通過字元指標來間接實現的。5,0 是乙個ascii字元,其實就是編碼為0的那個字元 真正的0,和數字0是不同的,數字0的ascii值是48 要注意區分 0 0 0 0等於 0 0 等於48 1 include2...

C語言字元陣列和字串

用來存放字元的陣列稱為字元陣列,例如 char a 10 一維字元陣列 char b 5 10 二維字元陣列 char c 20 給部分陣列元素賦值 char d 對全體元素賦值時可以省去長度 字元陣列實際上是一系列字元的集合,也就是 字串 string 在c語言中,沒有專門的字串變數,沒有stri...

C語言 筆記 字元陣列和字串的概念

目錄 字串和字元的區別 字元陣列如何儲存字串 字串的定義和初始化 字元陣列和字元指標 字串 x 和字元常量 x 不同。區別一是 x 是基本型別 char x 是派生型別 char陣列 區別二是 x 實際由兩個字元組成 x 和空字元 0 c語言中沒有專門用於儲存字串的變數型別,字串都被儲存在char型...