首页新闻找找看学习计划

strcpy函数的输出问题?

0
悬赏园豆:5 [已解决问题] 解决于 2012-05-26 12:23
#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;
}


 
c++
waynewuzhenbo的主页 waynewuzhenbo | 初学一级 | 园豆:189
提问于:2012-05-20 08:35
< >
分享
最佳答案
1

看看这个图,是栈空间在复制之前和之后的分配情况。

注意以下几点:

1.栈是由高地址向低地址增长的。

2.复制时遇到'\0'才停止复制。

3.cout<<一个字符串也是遇到'\0'才停止。

收获园豆:4
hazir | 菜鸟二级 |园豆:216 | 2012-05-20 17:15
其他回答(1)
0

堆栈溢出,由于堆栈是由高地址向低地址生长的,所以string2空间不足时会覆盖掉string1部分空间.

收获园豆:1
^上善若水^ | 园豆:227 (菜鸟二级) | 2012-05-20 09:59
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册