C++中关于字符串数组与字符串常量(转)_C/C++_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > C/C++ > C++中关于字符串数组与字符串常量(转)

C++中关于字符串数组与字符串常量(转)

 2013/10/22 0:19:42  yfy_cpp  程序员俱乐部  我要评论(0)
  • 摘要:原文地址:http://blog.csdn.net/code_bomber/article/details/1862327今天遇到了好多问题,从内存到字符串。。。上网查了些资料,现在就字符串数组和字符串常量来做个总结吧。其实也就是charsz[]="string";和char*psz="string";这两种字符串的赋值之间的区别。首先来说说charsz[]="string";这条语句,该语句是按照数组的形式来一个个存放的,编译器将其解释为charsz[]={'s','t','r','i'
  • 标签:字符串数组 c++ 数组 字符串
原文地址:http://blog.csdn.net/code_bomber/article/details/1862327
今天遇到了好多问题,从内存到字符串。。。上网查了些资料,现在就字符串数组和字符串常量来做个总结吧。其实也就是char  sz[] = "string"; 和char *psz = "string";  这两种字符串的赋值之间的区别。

首先来说说
class="c++">char  sz[] = "string"; 

这条语句,该语句是按照数组的形式来一个个存放的,编译器将其解释为
char   sz[] = {'s','t','r','i','n','g','/0'}; 

如果在函数内部出现的话,这几个字符将存放在堆栈中,所以不是字符串常量。

再来说说
char *psz = "string"; 

这条语句,该语句定义了一个指向"string"字符串的指针,并没有空间存放"string"字符串,显然把“string”当做字符串常量并存放在常量区是最合适的选择。并且语句 psz[4] = 'x'; 在编译时不会报错,执行时会产生异常,原因是“string”存放在只读存储区,不可以修改。这和C++中 const char *psz = "string";一句是一样的,所以最好显示的加上const关键字从而让编译器检测出“修改常量“错误
发表评论
用户名: 匿名