字符串操作函数中的参数问题

这个首先先解释下一个很基础但是却很重要又常常容易搞混的问题。
char a[]和char*的区别。
《c语言程序设计》(中文版)的解释挺不错的,我再大概说一下。
..............................
char ame[] = "nw is the time";
char *pme = "now is the time";
首先说pme是把一个指向该字符数组的指针赋值给pme.这个过程没有涉及到字符串的复制,只是有指针的操作。pme首先是一个指针,这个指针指向一个字符串常量,这个指针此后可以被修改为指向其它字符串,但是如果修改字符串本身的内容,结果是未定义的。ame是一个存放初始化字符串和空字符的一维数组,数组中的单个字符都是可以被修改的,但是ame是个地址常量,是不可以被修改的,它始终指向这一个字符串。

string.h中定义了很多字符串操作函数,比如strncat,这些函数至少都有两个参数,第一个参数是目的字符串,第二个参数是源字符串。
关于这个参数的类型到底用哪种,要看相关的参数内容在函数执行完以后是不是会发生改变。如果参数内容发生改变了就要用char[],如果参数的内容不发生改变则两个都可以用。

比如strncat(s,ct,n),函数的作用是把ct的前n个字符连接到s的后面,最后补上一个空字符。那么显然执行完以后s的内容是变化了的,所以定义s是必须是char s[80],不能是char *s,对于ct来说内容没有发生变化,怎么定义就都可以了。

posted on 2011-12-25 16:25 古月 阅读(695) 评论(0)  编辑 收藏 引用 所属分类: C/C++


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2011年12月>
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567

导航

统计

常用链接

留言簿

随笔分类

随笔档案

文章档案

C++/C

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜