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

2021-09-22 12:59:17 字數 2024 閱讀 2474

目錄

字串和字元的區別

字元陣列如何儲存字串

字串的定義和初始化

字元陣列和字元指標

字串「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...