下列代码:
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';,原因也是上述的解释。
本文深入探讨了C++中常量区与栈区的概念,详细解析了它们之间的区别,并通过实例展示了如何在实际编程中灵活运用这些知识,提升代码效率与安全性。
476

被折叠的 条评论
为什么被折叠?



