繁体   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