A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  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来计算的字符串长度呢?
这个函数可以用其它方法解决,我是想搞懂这个方法的原理,谢谢!

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马