Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / C常见问题之字符串的数组形式与指针形式的区别

由双引号括起来的字符串常量属于静态存储类型,它被存储在内存的静态存储区内,所以无论字符串常量出现在程序的什么地方,它在程序的整个运行过程中只存储一份。如果用字符串常量初始化字符数组,就是从静态存储区把整个字符串复制给数组。例如:char a[] = "hello";如果用字符串常量初始化字符指针,就是把字符串在静态存储区的地址复制给指针。例如:char *p = "world";这两种形式的一个重要区别是不能通过指针来修改字符串的值,但是字符数组不存在这个问题,如下语句是错误的:p[0] = "p";而如下语句没有问题:为了避免通过指针修改字符串的错误,建议将字符指针声明为const类型,如下所示:const char *p = "world";相关阅读:C++ 隐式类类型转化 Implicit Class-Type Conversions http://www.linuxidc.com/Linux/2013-01/78071.htmC语言变长数组之剖析 http://www.linuxidc.com/Linux/2013-07/86997.htmC语言需要注意的问题 http://www.linuxidc.com/Linux/2013-05/84301.htmC语言位域的使用及其注意点 http://www.linuxidc.com/Linux/2013-07/87027.htmC语言中简单的for循环和浮点型变量 http://www.linuxidc.com/Linux/2013-08/88514.htm