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
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
相关文章推荐
- 动态ARP表项建立条件
- C#中各类获取设备存储信息的各类方法
- AndroidUI组件之RoomButton
- java 构造函数
- Fix invisible cursor issue in Ubuntu 13.10
- slerp插值的实现
- Median of Two Sorted Arrays
- column 'id' in field list is ambiguous
- 国内5款优秀的WEB前端框架
- “疯狂猜成语”软件用户体验
- 运维的我要学开发--Python(6)
- leetcode第一刷_Interleaving String
- C#获取磁盘列表与信息
- Linux利用i节点删除乱码文件
- HDOJ 1874 畅通工程续
- c#中调用存储过程返回表的分页数据及总记录个数
- 关于jQuery链式操作
- JavaScript也能求爱哦
- java开发必备利器
- memcpy函数