| 
 
| 这是C语言的一道练习,在定义新的函数的时候,用得时指针变量来计算字符长度的。有疑惑,希望大神们帮忙解答复制代码#include <stdio.h>
/*
 (不包括\0)
 编写一个int string_len(char *s),返回字符串s的字符长度
 */
int string_len(char *s);
int main()
{
    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;
}
问题一:在定义新的函数内部,定义了一个指针变量p指向s,也就是字符串的首字符,在这个里面,p存放的应该是首字符的地址吧?
 问题二:在用while循环时,*s++指的是不是*(s++)?在这个过程中,指针变量s的值应该也是地址吧?
 问题三:如果上面两个问题中,p和s存放的都是地址,怎么用s - p - 1来计算的字符串长度呢?
 这个函数可以用其它方法解决,我是想搞懂这个方法的原理,谢谢!
 
 
 | 
 |