我正在查找一些代码技巧。我发现了一个我得到了基础知识,但我不明白为什么它会退出。它与while循环中的字符串指针有关。通常我不会处理字符串,因为我主要在嵌入式系统...小工具上工作。我需要理解为什么字符串指针在没有递增的情况下结束。
所以在这段代码中,你传入一个指向字符串的指针,然后在这个while循环中你增加计数器女巫被添加到指针,所以访问的地址不断增加。我明白了。我的问题是它为什么要完成?会发生什么,使得while循环计算为false并退出?对我来说,它似乎只是继续增加到int的大小然后再次环绕。
int string_length(char *s)
{
int c = 0;
while(*(s+c))
c++;
return c;
}
答案 0 :(得分:4)
while(*(s+c))
返回false并中断循环
答案 1 :(得分:2)
字符串是字符的arrary,最后一个字符是终止字符 - \ 0。 while的计算检查从指针s指示的位置开始的每个char,然后通过将c添加到起始地址将其转移到下一个char(下一个数组条目)。一旦\ 0 - 终止字符 - 到达循环中断。
答案 2 :(得分:0)
int lungh(char *p){
char *r = p;
while(*p++!='\0'){}
return p-r;
}