小白先上代码
#include<iostream>
using namespace std;
//设计函数返回字符串的前n个字符
char* re(const char* str,int n = 1);
int main()
{
const char* p = "hello world";
cout << re(p,100) << endl;
return 0;
}
char* re(const char* str,int n)
{
if(n < 0)
n = 0;//防止用户输入负数
char* p = new char [n + 1];
for(int i = 0;i < n && str[i];i++)
p[i] = str[i];
p[n] = '\0';//这里我把最后一个元素的值设置为0
return p;
}
在上面的re函数中,我把新建的数组p的最后一个元素设置为0,可是当str数组很短,并且我传入的n很大的时候,p数组中就会有剩余空间,他们的数值是未知的,但是为什么程序可以正常运行,不会出错呢?(比如面的程序正常输出hello world)