黑马程序员技术交流社区

标题: 利用指针变量计算字符串长度问题 [打印本页]

作者: 流转少年    时间: 2015-3-29 20:24
标题: 利用指针变量计算字符串长度问题
  1. #include <stdio.h>
  2. /*
  3. (不包括\0)
  4. 编写一个int string_len(char *s),返回字符串s的字符长度
  5. */
  6. int string_len(char *s);
  7. int main()
  8. {
  9.     int size = string_len("tre777");
  10.     printf("%d\n", size);
  11.     return 0;
  12. }
  13. int string_len(char *s)
  14. {
  15.     // 1.定义一个新的指针变量指向首字符
  16.     char *p = s;
  17.     /*
  18.     while ( *s != '\0' )
  19.     {
  20.         s++;
  21.     }*/
  22.     while ( *s++ ) ;
  23.     return s - p - 1;
  24. }
复制代码
这是C语言的一道练习,在定义新的函数的时候,用得时指针变量来计算字符长度的。有疑惑,希望大神们帮忙解答
问题一:在定义新的函数内部,定义了一个指针变量p指向s,也就是字符串的首字符,在这个里面,p存放的应该是首字符的地址吧?
问题二:在用while循环时,*s++指的是不是*(s++)?在这个过程中,指针变量s的值应该也是地址吧?
问题三:如果上面两个问题中,p和s存放的都是地址,怎么用s - p - 1来计算的字符串长度呢?
这个函数可以用其它方法解决,我是想搞懂这个方法的原理,谢谢!






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