通俗的講字串是由一串字元組成
,例如 「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,形式引數名在同一函式中唯一,可與其它函式變數同名。函...