c語(yǔ)言初識(shí)指針之字符串小寫判斷 c語(yǔ)言定義字符串類型的關(guān)鍵字?
C語(yǔ)言中沒有特殊的字符串類型。通常放入一個(gè)指針或者一個(gè)字符數(shù)組,比如。const char* ch1.1 C語(yǔ)言沒有原生字符串類型。java、C#等很多高級(jí)語(yǔ)言都有字符串類型,有一個(gè)字符串來表示字符串
C語(yǔ)言中沒有特殊的字符串類型。
通常放入一個(gè)指針或者一個(gè)字符數(shù)組,比如。
const char* ch
1.1 C語(yǔ)言沒有原生字符串類型。
java、C#等很多高級(jí)語(yǔ)言都有字符串類型,有一個(gè)字符串來表示字符串。用法和int類似。您可以使用字符串s1 #34linux#34定義字符串類型的變量。
2)C語(yǔ)言中沒有字符串類型,C語(yǔ)言中的字符串是通過字符指針間接實(shí)現(xiàn)的。
1.2 C語(yǔ)言使用指針管理字符串。
C語(yǔ)言中定義字符串的方法:char *p #34linux#34此時(shí)P被稱為字符串,但實(shí)際上P只是一個(gè)字符指針(本質(zhì)上是一個(gè)指針變量,只有P指向一個(gè)字符串的起始地址)。
1.3 C語(yǔ)言中字符串的本質(zhì):內(nèi)存的一段,指針指向頭部的地址,尾部固定。
1)字符串就是一串字符?,F(xiàn)實(shí)中反映的字符是字符、符號(hào)、數(shù)字等使用的字符,編程中反映的字符是字符類型的變量。在C語(yǔ)言中,ASCII編碼用于編程字符。編碼后,一個(gè)字符可以用一個(gè)char變量來表示。字符串是多個(gè)字符的組合。
1.C語(yǔ)言中表示字符串的有兩種:字符指針和字符數(shù)組。
2.字符指針代表一個(gè)字符串。
從編譯器 ■觀點(diǎn):
比如char *p #34linux#34 p是字符指針,#34linux#34是字符串本身。當(dāng)編譯器遇到這種字符串表示時(shí),它會(huì)將指針與字符串本身分開。字符指針p是一個(gè)變量并把它放在堆棧上,而字符串本身#34linux#34存儲(chǔ)在代碼段中,它的第一個(gè)地址賦給p。
從記憶的角度來看:
比如char *p #34linux#34會(huì)先在堆棧上為字符指針P打開一個(gè)4字節(jié)的空間,而#34linux#34字符串本身會(huì)在代碼段中為其打開一個(gè)6字節(jié)的存儲(chǔ)空間,并將存儲(chǔ)空間的第一個(gè)地址賦給P。
3.一個(gè)字符數(shù)組代表一個(gè)字符串
從編譯器 ■觀點(diǎn):
比如char a[] #34linux#34 a是一個(gè)字符數(shù)組,編譯器會(huì)把它放到堆棧上,而#34linux#34字符串本身只存在于編譯器中,也就是編譯器只是用它來初始化字符數(shù)組A,然后丟棄它。
從記憶的角度來看:
例如,char a[] #34linux#34定義了一個(gè)字符數(shù)組A,它在堆棧上創(chuàng)建了一個(gè)6字節(jié)的存儲(chǔ)空間,而#34linux因?yàn)閤#34字符串本身只存在于編譯器中,所以不需要為它開辟存儲(chǔ)空間。
4.兩種表示字符串的區(qū)別
字符數(shù)組本身就是一個(gè)數(shù)組,數(shù)組本身有自己的內(nèi)存空間,可以用來存放東西;字符指針是一個(gè)指針,它總是只占用4個(gè)字節(jié),而這4個(gè)字節(jié)可以 t被用來存儲(chǔ)有效數(shù)據(jù),所以我們只能把有效數(shù)據(jù)存儲(chǔ)在別的地方,然后把第一個(gè)地址存儲(chǔ)在p中。