字符常量是由一對單撇號括起來的單個字符,如 ‘a’、‘C’、‘?’,‘$’。在C語言中,除了字符常量還有字符串常量以及字符串變量,先來講一下字符串常量的個人理解:
(1)常量本質在于不可更改,而字符串常量是就是一對雙引號括起來的字符序列常量。例如“hello word”C語言中規定,在每一個字符串常量的結尾,系統都會自動加一個字符’\0’作為結束標志符。而‘\0’在ascii碼中為0字符,不起任何控制作用,也不是一個顯示的字符。不過在計算字符常量的內存大小時,雙撇號內有n個字符,那么內存大小為n+1個字節。
(2)字符串變量,值得注意的是字符串常量不能賦給一個字符變量,字符串是一連串字符,而字符變量僅可以存儲一個字符,而且字符串并不屬于數據類型,故C語言中任何數據類型的變量都不能直接存儲一個字符串,那么字符串如何存儲?C語言中有兩種存儲字符串的方式,一種是通過字符數組存儲,一種是通過字符指針存儲。
C語言中通常使用字符數組作為字符串變量來存放一個字符串,數組中每一個元素存放一個字符,例如“char a[10]="love"”。上例其中a[10]作為存儲字符串常量“love”的字符數組,而字符數組也被字符串“love”初始化其內存空間。而字符數組名就是其存儲的字符串常量首地址。
另外,字符指針存儲其實質是將字符串首地址賦給字符指針,并且內存位置也是以字符串首地址往后的一片內存空間。例如:char *buf=“hello”,其中buf為字符串首地址,字符串存儲為buf地址開始的連續內存空間,可以使用buf++遍歷字符串。值得注意的一點是*buf為指向字符串首地址內容,即字符h所在地址。若想輸出打印字符串,使用buf++遍歷是一種,也可以利用字符串首地址以字符串格式輸出打印,例如:printf(“%s”,buf);