char *string="xxxxxxxxx" 与 char string[]="xxxxx"的区别

来源:互联网 发布:雷欧奥特曼mac全灭 编辑:程序博客网 时间:2024/06/08 09:28

char *string=”xxxxxx“

这种方式使用的字面值模式,只读,不可以修改。string是个指针,这个字符串存放在程序的RODATA(read-only)段,不能修改的!

表示你定义了一个字符指针,这个指针指向一个字符串常量,既然是常量那么通过这个指针修改这个常量是不可以的。


char string[]="xxxxx"

这种方式,字符串存储在数组中,可以修改,string是个数组。这个字符串存放在程序的数据栈中,动态分配的内存,可以修改的.是个变量!

表示你定义了一个字符数组,数组的长度省略没有给出,编译器会根据后边的字符串自动计算,比如这个就是12(11个字符再加一个隐含的结束符'\0'),这个字符数组修改当然就没有问题了


总结

两者的重点在于一个是只读的,常量,内容不可修改!一个是字符串,动态分配内存的,是个变量,内容可以修改!

0 0
原创粉丝点击