"for(;*p; ++ p)*p = tolower(*p);" 在c工作?

Dav*_*ave 5 c pointers lowercase

我对编程很新,只是想知道为什么这个代码:

for ( ; *p; ++p) *p = tolower(*p);
Run Code Online (Sandbox Code Playgroud)

当p指向一个字符串时,是否可以降低c中的字符串大小写?

Bat*_*eba 2

为了取消选择,我们假设p是一个指向 a 的指针char,并且在for循环之前,它指向字符串中的第一个字符。

在 C 中,字符串通常由一组连续char值建模,最后添加一个 0 作为空终止符

*p一旦到达字符串空终止符,将求值为 0。然后for循环就会退出。(循环中的第二个表达式for充当终止测试)。

++p前进到字符串中的下一个字符。

*p = tolower(*p)将该字符设置为小写。