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
导致这种结果的原因主要是其存储方式不同:
前者是常量字符串,存储在内存中的常量区,并用一个指针来指向它,是无法改变其内容的,
后者是存储在内存的栈中,是可以改变它其内容的。