黑马程序员技术交流社区

标题: 今天整理C语言日记,有道指针和字符串的习题有点不明白 [打印本页]

作者: wxy19891017    时间: 2015-4-6 20:42
标题: 今天整理C语言日记,有道指针和字符串的习题有点不明白
#include <stdio.h>
/*
(不包括\0)编写一个int string_len(char *s),返回字符串s的字符长度
*/
int string_len(char *s);

int main()
{
    //char *name = "itcast";
   
   // 男 \u434\u4343\u434
   
    int size = string_len("tre777");
   
    printf("%d\n", size);
    return 0;
}

int string_len(char *s)
{
    // 1.定义一个新的指针变量指向首字符
    char *p = s;
   
    /*
    while ( *s != '\0' )
    {
        s++;
    }*/
   
    while ( *s++ ) ;
   
    return s - p - 1;
}
找了找视频,正好讲这个习题的视频没有,代码中其它两种方法都理解,就是这个返回值 s-p-1,这个还没搞懂什么意思。舍不得黑马币去悬赏,所以在这交流下,有哪位学长能指教下吗?
作者: kim55666    时间: 2015-4-6 21:02
s++走到了\0位置, p是初始位置,s-p= 字符串的长度,包括\0。strlen不包含\0所以再 -1.
作者: 波阿波    时间: 2015-4-6 21:02
多看看 多敲敲代码
作者: wxy19891017    时间: 2015-4-7 23:06
kim55666 发表于 2015-4-6 21:02
s++走到了\0位置, p是初始位置,s-p= 字符串的长度,包括\0。strlen不包含\0所以再 -1. ...

哦哦哦。原来如此,非常感谢,一直没搞明白这个!:handshake




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2