关于'\0'问题

来源:百度知道 编辑:UC知道 时间:2024/06/17 08:33:30
1.char c[]="0123456789";
char *p=new char[strlen(c)];
strcpy(p,c);
cout<<p;
2.char c[]="0123456789";
char *p=new char[strlen(c)+1];
strcpy(p,c);
cout<<p;
delete p;
为啥代码段2长度需要strlen(c)+1
代码段1不加1为啥是对的

不加1是不对的

不对未必结果不对, 数组越界也可以写, 只不过这样就没有任何机制保证他不出错了

strlen(c) 不计字符串结束符 "\0",
所以分配单元时至少要加1。