| 
 
| 在c里面指针与字符串那一部分有这么一个小练习:编写一个int string_len(char *s),返回字符串s的字符长度 
 
 函数里面后面是我自己写的,然后看了老师写的前面的那种方法,倒是能顺出详细的思路,可是我比较疑惑的是,当*s指向‘\0’的时候,返回值是0吗?还有就是虽然*在这里不是运算符不用考虑优先级的问题,可是也就是说我们不能用指针对指向的变量进行自增自减吗?我自己有点绕晕了,望大神们指教啊~~~复制代码
//        编写一个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;//返回计数器的值即为字符串长度
     */
}
 
 
 | 
 |