char *与char[]的区别

来源:互联网 发布:自动制作视频软件 编辑:程序博客网 时间:2024/06/05 11:39

下列代码:

char *str1 = "hfut";char *str2 = "hfut";char str3[] = "new";char str4[] = "new";

str1和str2实际上指向的是同一个内存区域,因为"hfut"被编译器是视为常量,存放在常量区了。

而,

str3和str4指向的不是同一个内存去也,它实际上是在栈上开辟一个数组,然后把常量区的"new"复制到其中。

由此可知他们之间有很大的不同,虽然有那么点形似。


ps.上述,可以写str3[i]='s';但是不能写str1[i]='s';,原因也是上述的解释。