char* s1 = "hello";
char s2[] = "world";
相同点:都是表示一个字符串。
不同点:操作系统对它们在内存中的存储方式作了不同的处理。
下面是测试代码。
#include <iostream.h>
int main()
{
char *S1 = "Hello";
char S2[] = "World";
// *(S1+2) = 'x'; // 执行时出错。
*(S2+5) = 'x'; // 执行时正确。
*(S2+6) = '/0';
cout << S1 << endl;
cout << S2 << endl;
return 0;
}
// 运行结果:
Hello
Worldx
导致这种结果的原因主要是其存储方式不同:
前者是常量字符串,存储在内存中的常量区,并用一个指针来指向它,是无法改变其内容的,
后者是存储在内存的栈中,是可以改变它其内容的。
本文通过一个简单的C++示例,展示了两种字符串表示方法的区别:一种使用指针指向常量字符串,另一种则直接定义为数组形式。前者不可修改,后者可以在栈内存中被更改。
3425

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



