目錄
字串和字元的區別
字元陣列如何儲存字串
字串的定義和初始化
字元陣列和字元指標
字串「x」和字元常量'x'不同。
區別一是'x'是基本型別(char),「x」是派生型別(char陣列)
區別二是「x」實際由兩個字元組成:'x'和空字元\0
c語言中沒有專門用於儲存字串的變數型別,字串都被儲存在char型別的陣列中。
c語言用空字元\0標記字串的結束。它不是數字0,是非列印字元,ascii碼值為0。
c中的字串一定以空字元結束。
因此,陣列的容量至少要比字元資料的長度多1.
1.字串常量
用雙引號括起來的內容:「hello world」
字串常量屬於靜態儲存類別,在函式中使用字串常量,該字串只會被儲存一次,在整個程式的生命期內存在,即使函式被呼叫多次。
2.字串陣列和初始化
/*1.用字元常量初始化陣列*/
/*所有未被使用的元素被自動初始化為空字元\0*/
char str[20] = "hello world";
/*編譯器會計算陣列的大小*/
char str = "hello world";
/*2.標準的陣列初始化*/
char str[2] = ;//不要忘記空字元
3.字串指標初始化
char *str = "hello world";
1.區別
char str[20] = "hello world";
const char *sp = "hello world";
兩者的主要區別:陣列名str是常量,指標名sp是變數。
陣列的元素是變數,但是陣列名str不是變數。
陣列獲得是原始字串的副本,而指標指向字串變數本身。
因此如果要用下標修改字串,最好使用字元陣列。
注意以下例子!
char *sp = "hello world";
sp[1] = '1';//是否允許???
編譯器可能允許這樣做,但是會造成錯誤。因此建議在把指標初始化為字串字面量時使用const限定符;
2.字串陣列
指向字串的指標陣列
char *sp[2] = ;
char 陣列的陣列
char str[2][10] = ;
相同點:兩者都代表2個字串
區別:sp是乙個內含2個指標的陣列,在系統中共占用8位元組。char陣列str是乙個內含2個char陣列的陣列,在系統中共占用20位元組。
可以把str看成矩形二維陣列,每行的長度都是10位元組;sp可以看成不規則的陣列,每行的長度不同。
綜上,如果要用陣列表示一系列字串,建議用指標陣列sp,效率高。但是指標陣列sp中的指標指向的字串常量不能修改!
空白的概念:換行符\n、製表符\t、空格
參考:c primer plus 第六版
《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語言筆記 字串和字元陣列》
一,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...