字符常量是由一對(duì)單撇號(hào)括起來(lái)的單個(gè)字符,如 ‘a(chǎn)’、‘C’、‘?’,‘$’。在C語(yǔ)言中,除了字符常量還有字符串常量以及字符串變量,先來(lái)講一下字符串常量的個(gè)人理解:
(1)常量本質(zhì)在于不可更改,而字符串常量是就是一對(duì)雙引號(hào)括起來(lái)的字符序列常量。例如“hello word”C語(yǔ)言中規(guī)定,在每一個(gè)字符串常量的結(jié)尾,系統(tǒng)都會(huì)自動(dòng)加一個(gè)字符’\0’作為結(jié)束標(biāo)志符。而‘\0’在ascii碼中為0字符,不起任何控制作用,也不是一個(gè)顯示的字符。不過(guò)在計(jì)算字符常量的內(nèi)存大小時(shí),雙撇號(hào)內(nèi)有n個(gè)字符,那么內(nèi)存大小為n+1個(gè)字節(jié)。(2)字符串變量,值得注意的是字符串常量不能賦給一個(gè)字符變量,字符串是一連串字符,而字符變量?jī)H可以存儲(chǔ)一個(gè)字符,而且字符串并不屬于數(shù)據(jù)類型,故C語(yǔ)言中任何數(shù)據(jù)類型的變量都不能直接存儲(chǔ)一個(gè)字符串,那么字符串如何存儲(chǔ)?C語(yǔ)言中有兩種存儲(chǔ)字符串的方式,一種是通過(guò)字符數(shù)組存儲(chǔ),一種是通過(guò)字符指針存儲(chǔ)。C語(yǔ)言中通常使用字符數(shù)組作為字符串變量來(lái)存放一個(gè)字符串,數(shù)組中每一個(gè)元素存放一個(gè)字符,例如“char a[10]="love"”。上例其中a[10]作為存儲(chǔ)字符串常量“l(fā)ove”的字符數(shù)組,而字符數(shù)組也被字符串“l(fā)ove”初始化其內(nèi)存空間。而字符數(shù)組名就是其存儲(chǔ)的字符串常量首地址。另外,字符指針存儲(chǔ)其實(shí)質(zhì)是將字符串首地址賦給字符指針,并且內(nèi)存位置也是以字符串首地址往后的一片內(nèi)存空間。例如:char *buf=“hello”,其中buf為字符串首地址,字符串存儲(chǔ)為buf地址開(kāi)始的連續(xù)內(nèi)存空間,可以使用buf++遍歷字符串。值得注意的一點(diǎn)是*buf為指向字符串首地址內(nèi)容,即字符h所在地址。若想輸出打印字符串,使用buf++遍歷是一種,也可以利用字符串首地址以字符串格式輸出打印,例如:printf(“%s”,buf);
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。