C語言字串與字元陣列

2021-10-08 18:11:46 字數 1688 閱讀 7940

通俗的講字串是由一串字元組成,例如 「hello world\n」,即是乙個字串。

c 語言中沒有真正意義上的字串型別,字串由字元陣列或者字串常量來表示

const

char

*p =

"hello world\n"

;

上述示例中"hello world\n"即是乙個字串常量,該常量由乙個字元型別指標儲存其實際位址。該字串常量一般儲存於靜態儲存區。c 語言字串常量以\0作為結束標記,故而每個字串常量預設包含乙個\0

上述字串常量是無法對其進行改變的,想要改變字串中某個元素的字元,可以將字串宣告為字元陣列型別。

陣列,即用來存放一組資料,該組資料元素型別一致。

char hello[15]

="hello world\n"

;

上面字元陣列 hello 中包含 15 個字元,其中前13個字元來自於字串常量"hello world\n"

什麼,我數著就只有 12 個字元呀,『h』、『e』、『l』、『l』、『o』、『空格』、『w』、『o』、『r』、『l』、『d』、』\n』?

因為,c 語言字串常量,預設結尾包含乙個 \0 作為結束標記

c 字元陣列可以使用 字串常量 初始化

char arr[10]

="hello"

;

此時,陣列arr前 6 個元素來自字串常量 "hello"其中包含\0,剩餘 4 個元素,預設初始化為 0。

char arr[10]

="helloworld"

;

此時,陣列arr前 10個元素來自字串常量 "helloworld"其中包含\0, 此時該編譯器不會給出警告,因為不存在\0結束標記,使用printf("%s",arr)輸出時,易導致訪問越界問題。

char arr[10]

="helloworld\n"

;

此時,陣列arr前 10個元素來自字串常量 "helloworld\n"其中包含第11個字元\n, 此時字元陣列同樣不存在結束邊界,訪問易越界。

char arr=

"helloworld\n"

;

此時,編譯器會自動計算出 字元陣列 arr 的長度為 12,此時包含結束標記。

c語言陣列與字串

二維陣列 回想一維陣列定義方式 型別修飾符 陣列名 元素個數 int array 5 建立乙個二維陣列 型別修飾符陣列名 包含幾個小陣列 每個小陣列有多少個元素 初始值如何寫?int array 3 4 一維陣列可以省略元素個數,二維資料只能省略第一維 第二種初始值寫法 int array 3 4 ...

C語言陣列與字串

一 c語言陣列 1.c 語言支援陣列資料結構,它可以儲存乙個固定大小的相同型別元素的順序集合。陣列是用來儲存一系列資料,但它往往被認為是一系列相同型別的變數。陣列可以用一些基本的資料型別來定義,int,double,float.比如,定義乙個整形陣列 int a 10 a為陣列名,a陣列成員共有10...

C語言 函式與陣列 字元陣列與字串

本博文為半摘記性質。函式的定義以及呼叫 一維陣列 二維陣列 字元陣列與字串 函式設計包括函式頭和函式體,函式體由說明部分和執行部分組成。函式名為函式的首位址。函式的定義與呼叫 函式的定義形式 型別名 函式名 型別名 形式引數1,型別名 形式引數2,形式引數名在同一函式中唯一,可與其它函式變數同名。函...