指针类型和其他基础类型在做形参时的相同点

932阅读 0评论2012-12-19 xbbHistory
分类:C/C++


  1. #include <stdio.h>

  2. int count_str(const char *);

  3. int main(void)
  4. {
  5.    char *s = "abcdef";
  6.    int num;

  7.    num = count_str(s);
  8.    printf("s2 = %s\n", *s ? s : "NULL");  
  9.    return 0;
  10. }
  11. int count_str(const char *s)
  12. {
  13.    const char *p;
  14.    int num;
  15.    
  16.    p = s;
  17.    while(*s++);    //两个例程的不同开始
  18.    num = s - p;
  19.    
  20.    /*指针s值改变后的输出*/
  21.    printf(“s1 = %s\n”, *s ? s : "NULL");
  22.    return num;
  23. }
在这个例程里

函数count_str()的形参是个指针,对于指针本身来说,她就是个值传递,函数内对指针本身的修改不会影响实参s的值,对指针本身来说这里的形参只是实参的一个拷贝。

从这个角度看,指针这个类型本身和其他基础类型在传入函数时是一样的,只是一个拷贝值。

所以在这个例程,函数count_str()里可以对s做自增操作,而不用担心调用完该函数后s值改变为

指向字符串的末尾空字符而导致再使用s时不能打印出字符串。






上一篇:ubuntu12.04下使用curses库时解决中文乱码
下一篇:没有了