这段C语言指针麻烦帮忙解释一下

指针这章学的还不够熟..麻烦高手们帮我解释解释这段代码..
#include "stdio.h"
int strlen(char *s)
{
char *p =s;
while (*p!='\0')
p++;
return p-s;
}
void main(){
printf("\nThe length of string 'computer' is %d\n",strlen("computer"));
}
主要是实参传形参的值是怎样传的..char类型的他并不是数组呀..应该只能存放一个字符才是..他怎么能把一个字符串给传过去呢..

我明白这指针是用他们的地址相减..得出的差就是他们的个数..可不明白实参和形参的如何传递...

char *p=s;使得p和s指向同一个位置,就是某个字符串的开头。while循环的作用是遍历字符串的每个值,看其是否为“\0”也就是字符串的结尾,如果不是则p指向下一个位置,如果是则返回p-s的值,休息此时p指向结尾,s仍然指向开头,那么他们的差值就是字符串的长度
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-12-10
strlen函数,用来计算字符转的长度。
char *s 指针指向字符串的首地址。
char *p 指针从首地址开始往后移动,直至字符串结束标志'\0'。
两指针相减的偏移为字符串的长度。