在c里面指针与字符串那一部分有这么一个小练习:编写一个int string_len(char *s),返回字符串s的字符长度
- // 编写一个int string_len(char *s),返回字符串s的字符长度
- #include <stdio.h>
- int string_len(char *s);
- int main()
- {
- printf("请输入一个字符串:\n");
- char a[20];
- scanf("%s",a);
- int size=string_len(a);
- printf("字符串的长度为%d\n",size);
- return 0;
- }
- int string_len(char *s)
- {
- char *p=s;//把指针p指向s第一个元素,即让p为s的初始值
- while (*s++);//当*s不为0时,s自增
- return (s-p-1);//最后的s减去s的初始值再减去多自增的1,即为字符个数
-
- /*
- int i=0;//设置计数器
- while (*s!='\0')//只要没到'\0'字符串就没结束
- {
- s++;//让指针地址自增1看下一个字节
- i++;//计数器+1
- }
- return i;//返回计数器的值即为字符串长度
- */
- }
复制代码 函数里面后面是我自己写的,然后看了老师写的前面的那种方法,倒是能顺出详细的思路,可是我比较疑惑的是,当*s指向‘\0’的时候,返回值是0吗?还有就是虽然*在这里不是运算符不用考虑优先级的问题,可是也就是说我们不能用指针对指向的变量进行自增自减吗?我自己有点绕晕了,望大神们指教啊~~~
|
|