[英]understanding strlen function in C
我正在學習C.而且,我看到這個函數找到一個字符串的長度。
size_t strlen(const char *str)
{
size_t len = 0U;
while(*(str++)) ++len; return len;
}
現在,循環什么時候退出? 我很困惑,因為str ++總是增加指針。
while(*(str++)) ++len;
與:
while(*str) {
++len;
++str;
}
與:
while(*str != '\0') {
++len;
++str;
}
所以現在你看到str
指向字符串末尾的null
char時,測試條件失敗並停止循環。
NUL
字符終止,其值為0
false
,其他任何都是true
。 所以我們繼續將指針遞增到字符串和長度,直到找到NUL
然后返回。
你需要理解兩個概念來抓住函數的想法:
1°)AC字符串是一個字符數組。
2°)在C中,數組變量實際上是指向表的第一種情況的指針。
那么strlen會做什么? 它使用指針算術來解析表(指針上的++表示:下一個例子),直到它到達結束信號(“\\ 0”)。
一旦*(str++)
返回0,循環退出。 當str
指向字符串的最后一個字符時會發生這種情況(因為C中的字符串終止於0)。
正確, str++
增加計數器並返回先前的值。 星號( *
)取消引用指針,即它為您提供字符值。
C字符串以零字節結尾。 當條件不再為真時, while
循環退出,這意味着當它為零時。
所以while
循環運行直到遇到字符串中的零字節。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.