【C语言进阶深度学习记录】二十七 C语言中字符串的相等比较
生活随笔
收集整理的這篇文章主要介紹了
【C语言进阶深度学习记录】二十七 C语言中字符串的相等比较
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 1 字符串的相等比較
- 1.1 代碼分析
1 字符串的相等比較
如果有字符串s1 = “Hello”; s2 = “Hello” ;
在我們看來s1與s2相等。但是如果使用 “==” 來判斷是不準確的。因為在代碼中s1與s2是是不同的字符串,它們位于不同的內存空間(當然,有的編譯器進行優化,直接將s1與s2指向同一個內存中的"Hello",但是正常來講s1與s2是指向兩個不同地址中的長得一樣的字符串"Hello")。
- 在C語言中,字符串的相等比較,必須使用函數strcmp。這種比較時比較字符串的內容是否相等,內容如果相等,那么strcmp就返回0.
- 如果使用 “==” 進行比較,必須是兩個字符串的內容與內存地址都相等才算相等
1.1 代碼分析
#include <stdio.h>int main(){char* S1 = "Hello world!";char* S2 = "Hello world!";if(S1 == S2){printf("Equal!\n");}else{printf("No equal!\n");}if(strcmp(S1, S2)==0){printf("Equal!\n");}else {printf("No equal!\n");}printf("%p, %p\n", S1,S2);return 0; }在gcc 4.4.5 以及vs2017運行結果都是:
Equal!
Equal!
0x8048580, 0x8048580
我這里沒有比較老的BCC編譯器,使用比較老的BCC編譯器,第一個就應該是No equal
雖然現在編譯器都有優化,但是我們作為優秀的程序員,還是需要使用完全正確的寫法。
總結
以上是生活随笔為你收集整理的【C语言进阶深度学习记录】二十七 C语言中字符串的相等比较的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hbase hmaster一会就没了_浅
- 下一篇: 超微服务器电源短接启动图解_教你一招,让