使用指针的字符串长度

时间:2014-12-15 23:59:31

标签: c string pointers

我正在查找一些代码技巧。我发现了一个我得到了基础知识,但我不明白为什么它会退出。它与while循环中的字符串指针有关。通常我不会处理字符串,因为我主要在嵌入式系统...小工具上工作。我需要理解为什么字符串指针在没有递增的情况下结束。

所以在这段代码中,你传入一个指向字符串的指针,然后在这个while循环中你增加计数器女巫被添加到指针,所以访问的地址不断增加。我明白了。我的问题是它为什么要完成?会发生什么,使得while循环计算为false并退出?对我来说,它似乎只是继续增加到int的大小然后再次环绕。

int string_length(char *s)
{
   int c = 0;

   while(*(s+c))
      c++;

   return c;
}

3 个答案:

答案 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;
}