您的位置:首页 > 其它

char a[]和char*的区别

2014-05-08 22:45 295 查看
《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来说内容没有发生变化,怎么定义就都可以
http://www.cppblog.com/gujiayue/archive/2011/12/25/162780.html http://blog.csdn.net/yahohi/article/details/7427724
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: