#include <iostream> #include <string> using std::cout; using std::cin; using std::endl; int main() { char String1[] = "No man is an island"; char String2[8]; strcpy(String2, String1); cout << "String1: " << String1 << endl; //string1的输出结果怎么解释?谢谢 cout << "String2: " << String2 << endl; system("pause"); return 0; }
看看这个图,是栈空间在复制之前和之后的分配情况。
注意以下几点:
1.栈是由高地址向低地址增长的。
2.复制时遇到'\0'才停止复制。
3.cout<<一个字符串也是遇到'\0'才停止。
堆栈溢出,由于堆栈是由高地址向低地址生长的,所以string2空间不足时会覆盖掉string1部分空间.