c传指针参数到函数

来源:百度知道 编辑:UC知道 时间:2024/07/01 23:58:39
int strlen(char *s)
{
int n;
for(n=0; *s!='\0'; s++)
n++;
return n;
}

“这里s++不会影响到strlen函数的调用者中的字符串,它仅对该指针在strlen函数中的私有副本进行自增运算”

这么说的原因是不是:
因为*s是char型指针变量s所指向的内容作为参数传入函数,所以在strlen函数内操作的实际是*s所知内容的一个副本,如果传入&s,则会改变s的内容?谢谢!

char *s,传入的s是地址,如果这样写:*s = 'a';或s[0] = 'a';当然会改变s指向的内容.
这里的s++;只是s指针向后走一个char的长度,比如strlen("abc");s指向'a';
s++;后s指向'b';并不会改变s指向的内容.

不是,
char *s是调用程序中实际变量的一个副本.
例如:
char *a = "this is a test";
int n = strlen( a );
等价于: s = a;
然后在执行函数里的语句.
因此即使s++,也不会改变a