一,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型...