Chinaunix首页 | 论坛 | 博客
  • 博客访问: 34521
  • 博文数量: 14
  • 博客积分: 260
  • 博客等级: 二等列兵
  • 技术积分: 125
  • 用 户 组: 普通用户
  • 注册时间: 2012-09-11 10:46
个人简介

白黑

文章分类

全部博文(14)

文章存档

2012年(14)

我的朋友

分类: C/C++

2012-12-19 16:01:59


  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时不能打印出字符串。






阅读(906) | 评论(0) | 转发(0) |
0

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

下一篇:没有了

给主人留下些什么吧!~~