- #include <stdio.h>
- int count_str(const char *);
- int main(void)
- {
- char *s = "abcdef";
- int num;
- num = count_str(s);
- printf("s2 = %s\n", *s ? s : "NULL");
- return 0;
- }
- int count_str(const char *s)
- {
- const char *p;
- int num;
-
- p = s;
- while(*s++); //两个例程的不同开始
- num = s - p;
-
- /*指针s值改变后的输出*/
- printf(“s1 = %s\n”, *s ? s : "NULL");
- return num;
- }
函数count_str()的形参是个指针,对于指针本身来说,她就是个值传递,函数内对指针本身的修改不会影响实参s的值,对指针本身来说这里的形参只是实参的一个拷贝。
从这个角度看,指针这个类型本身和其他基础类型在传入函数时是一样的,只是一个拷贝值。
所以在这个例程,函数count_str()里可以对s做自增操作,而不用担心调用完该函数后s值改变为
指向字符串的末尾空字符而导致再使用s时不能打印出字符串。
