这是没有问题的源程序:
/*
* Copyright (c) 2012, 烟台大学计算机学院
* All rights reserved.
* 作 者:解晓东
* 完成日期:2012 年 10 月 23 日
* 版 本 号:v1.0
*
* 输入描述:
* 问题描述:将字符串str1复制为字符串str2
* 程序输出:
* 问题分析:
* 算法设计:
*/
# include <iostream>
using namespace std;
int main()
{
char str1[] = "I love CHINA!", str2[20], * p1, * p2;
p1 = str1;
p2 = str2;
for(; *p1 != '\0'; p1++,p2++)
{
*p2 = *p1;
}
*p2 = '\0';//不加此行会多输出:烫烫烫蘄 love CHINA!
p1 = str1;
p2 = str2;
cout << "str1 = " << p1 << endl;//输出p1和p2
cout << "str2 = " << p2 << endl;
return 0;
}
/*
在vc++6.0中运行的结果是:
----------------------
str1 = I love CHINA!
str2 = I love CHINA!
----------------------
*/
这是有问题的源程序:
/*
* Copyright (c) 2012, 烟台大学计算机学院
* All rights reserved.
* 作 者:解晓东
* 完成日期:2012 年 10 月 23 日
* 版 本 号:v1.0
*
* 输入描述:
* 问题描述:将字符串str1复制为字符串str2
* 程序输出:
* 问题分析:
* 算法设计:
*/
# include <iostream>
using namespace std;
int main()
{
char str1[] = "I love CHINA!", str2[20], * p1, * p2;
p1 = str1;
p2 = str2;
for(; *p1 != '\0'; p1++,p2++)
{
*p2 = *p1;
}
// *p2 = '\0';//不加此行会多输出:烫烫烫蘄 love CHINA!
p1 = str1;
p2 = str2;
cout << "str1 = " << p1 << endl;//输出p1和p2
cout << "str2 = " << p2 << endl;
return 0;
}
传说这是数组越界~