黑马程序员技术交流社区

标题: 有没有人给我分析下这道题!! [打印本页]

作者: shane_west    时间: 2015-4-13 23:25
标题: 有没有人给我分析下这道题!!
  1. // 练习:编写一个int string_len(char *s),返回字符串s的字符长度(不包括\0)
  2. #include <stdio.h>

  3. int string_len(char *s)
  4. {
  5.     // 1.定义一个新的指针变量指向首字符
  6.     char *p = s;
  7.    
  8.     while ( *s++ ) ;
  9.    
  10.     return s - p - 1;
  11. }

  12. int main()
  13. {
  14.     char *name = "itcast男";
  15.    
  16.     int v = string_len(name);
  17.    
  18.     printf("%d\n", v);
  19.    
  20.     return 0;
  21. }
复制代码

作者: dyb_10101    时间: 2015-4-16 16:23
主要讲解 int str_len()函数:
将name传入此函数后,指针s和指针p都指向name的开头字母的内存地址;然后*s++开始遍历每个字母的值是否为真,又因为字符串以\0结束,并且 \0 的ASC码值为0,所以此时停止遍历,但是此时指针 s 保存的内存地址是 \0 的地址,所以是 return s-p-1;




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