【发布时间】:2017-12-14 16:05:09
【问题描述】:
我试过这个程序,但它不起作用,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;
}
这真的超出了我的范围,请帮助。为什么这个循环没有循环 10 次? '\0' 应该在第 10 位。
【问题讨论】:
-
你看到了什么行为?
-
它正在打印 0(代表 i),然后除了换行符之外什么都没有。
-
看看
while(*c)做了什么。你的意思可能是while(i<9) -
@MarekVitek 不,效果很好,试试这个然后你会发现: char *c ="hello"; while(*c){ \\做一些事情 ++c; }
-
如果你想看看发生了什么,那么就在它声明之后在调试器中查看
c。或者只是尝试打印出来。仅仅因为您在末尾使用*p='\0';设置了空终止符,并不意味着它不能在其他任何地方。事实上,您可以让数组/字符串充满空终止符。有时它被用作缩短字符串的快速方法。只需将\0放在新的结尾处即可。
标签: c++ arrays while-loop