【C语言进阶深度学习记录】二十六 C语言中的字符串与字符数组的详细分析
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                【C语言进阶深度学习记录】二十六 C语言中的字符串与字符数组的详细分析
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                之前有一篇文章是學習了字符和字符串的,可以與之結合學習:【C語言進階深度學習記錄】十二 C語言中的:字符和字符串
文章目錄
- 1 字符串的概念
 - 1.1 字符串與字符數組
 - 1.2 字符數組與字符串代碼分析
 
- 2 字符串字面量
 - 2.1 字符串字面量的本質的代碼分析
 
- 3 字符串的長度
 - 3.1 strlen 的使用代碼分析
 
- 4 總結
 
1 字符串的概念
字符串與字符數組很像,但是有差別,注意留意它們的差別。
- 字符串是有序字符的集合
 - C語言中,沒有字符串的概念(沒有string這個關鍵字,C++中才有)
 - 但是C語言中,必須使用字符串
 - 所以C語言通常都是使用特殊的字符數組來模擬字符串
 - C語言中的字符串,是以’\0’ 結尾的字符數組。也就是說只有字符數組結尾是 ‘\0’ 該字符數組才是字符串,否則該字符數組就是普通的字符數組。這一點很重要!!!
 
1.1 字符串與字符數組
在C語言中,雙引號引用的單個或多個字符是一種特殊的字面量
- 字面量存儲于程序的全局只讀存儲區
 - 它的本質是字符數組,編譯器自動在結尾加上 ‘\0’ 字符。注意,只有雙引號下的字面量,編譯器才會自動在后面加上’\0’字符。如果是一個普通的字符數組,是要自己在最后加的,否則無法成為字符串。
 
比如下面哪些是字符串的定義?
- 第一個ca不是字符串,它是普通的字符數組。
 - sa 也是字符數組,但是由于它末尾加了’\0’,所以它也是一個字符串
 - ss是用雙引號初始化的,編譯器會默認在最后加上’\0’,所以ss也是字符串
 - 同理str也是字符串
 
1.2 字符數組與字符串代碼分析
- 代碼: 30-1.c
 
- 編譯運行結果如下:
 
- 可以看出,只有第一個ca打印出來是亂碼,后面三個都是正常的。因為ca并不是字符串,我們以 ‘%s’ 打印的話,是類型不對應的,導致打印不對。(深層次原因的話是因為打印字符串都是遇到字符串的結尾’\0’就算打印一個字符串,但是ca中沒有’\0’ 字符)
 
2 字符串字面量
對于字符串的字面量,需要掌握幾點:
類似于這種 “Hello,world” 是一種無名的字符數組
看一下下面三個表達式是正確的么?如果正確,值是多少?
我們以代碼來驗證即可:
2.1 字符串字面量的本質的代碼分析
- 代碼:30-2.c
 
- 編譯運行上述代碼結果如下:
 
可以看出:
3 字符串的長度
這是一個比較重要的知識點:
- 字符串的長度,是指第一個’\0’ 出現之前的所有字符的個數
 - 函數strlen用于返回字符串的長度
 
如:
3.1 strlen 的使用代碼分析
- 代碼30-3.c
 
- 編譯運行結果為:
 
可以看到:
4 總結
- C語言中可以通過字符數組模擬字符串
 - C語言中的字符串是以 ‘\0’ 作為結尾字符
 - 字符串字面量的本質是一個無名的字符數組
 - 字符串的相關函數都依賴于最后的結束符 ‘\0’
 
總結
以上是生活随笔為你收集整理的【C语言进阶深度学习记录】二十六 C语言中的字符串与字符数组的详细分析的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: python音乐制作_Python实现音
 - 下一篇: Cisco Packet Tracer