我正在使用主要使用 C++ 但使用 c 样式字符串的现有代码开发一个项目。采取以下措施:
#include <iostream>
int main(int argc, char *argv[])
{
char* myString = "this is a test";
myString = "this is a very very very very very very very very very very very long string";
cout << myString << endl;
return 0;
}
这编译并运行良好,输出为长字符串。
但是我不明白它为什么起作用。我的理解是
char* myString
是一个指向足够大的内存区域的指针,以容纳字符串文字“这是一个测试”。如果是这种情况,那么我如何能够在同一位置存储更长的字符串?我预计它会在这样做时崩溃,因为试图将一根长字符串塞进一个留给较短字符串的空间中。
显然对这里发生的事情有一个基本的误解,所以我很感激任何帮助理解这一点。