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