簡體   English   中英

理解C中的strlen函數

[英]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時,測試條件失敗並停止循環。

  1. C字符串由NUL字符終止,其值為0
  2. 在C中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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM