int fun(char * str){//定义一个函数,传入参数为字符串 char *p=str; //定义一个指针指向传入字符串的首地址 while(*p!='\0') //判断是否字符串结束标志'\0' p++; //如果p指向的地址不为‘\0’的话,p指针后移一位char,知道为‘\0’的时候结束 //也就是字符串结尾 return p-str;//返回字符串结尾到字符串开头的字母数目,也就是传入字符串的长度}
这是一个自定义函数,目的是计算字符串的长度。char *p=str;是将str的首地址赋给指针p;while循环是将p移动到指向该字符串结尾。return(p-str)就是计算长度并返回到主函数。;举个例子:假设有9个数字,从1到9;0是第1个吧,9是最后1个吧;9就代表p,1就代表着str;9-1就变成了8,为什么不是答案不是9呢,看你的程序,while循环,当p指向的不是字符是才会跳出循环,结束循环之后,p明显指向的不是字符,而是结束标志了,就相当于10-1,等于9了。有不懂的可心以追问
int fun(char*str){ char*p=str; //定义一个字符指针指向传入的字符串 while(*p!='\0') p++; //遍历字符串中的字符,知道结尾 return(p-str); //将结尾的地址减去开始的地址,得出字符串长度,此长度不包括结尾的"\0”} 这函数是统计字符串长度的
return p-str, p为末地址,str为首地址,横杠为‘’减号‘’。有时候会出现return p-str-1,减1是测量字符串长度时,字符串中有'\0'为结束符,占一个字节。本人只是大一学生,若有理解不对地方,希望斧正。