我已经尝试过这个程序,但它没有用,IMO它应该在数组的每个位置存储q,但为什么不发生?
`
int main()
{
char *c=new char[10];
char *p=c+9;
*p='\0'; //This should've assigned the last value to null terminator
int i=0;
p=c;
while(*c)
{
i++;
*c='q';
cout<<*c<<endl;
++c;
}
cout<<i<<endl<<*p<<endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这真的超出了我,请帮忙.为什么这个循环没有循环10次?因为'\ 0'位于第10位.
你要求10 charsby new然后你尝试重复这些字符,while(*c)但是因为你从来没有初始化这个内存块,所以当你取消引用它时,你已经有了未定义的行为*c.
但是要解释这种情况,你很有可能在调试模式下运行它,在这种情况下,返回的所有内容都很有可能new被清零内存(调试器想要很好),这意味着你的while循环将立即终止.使用for循环代替或显式循环直到某个数字.