while循环在分配char'\ 0'时不起作用

0 c++ arrays while-loop

我已经尝试过这个程序,但它没有用,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位.

Som*_*ken 7

你要求10 charsby new然后你尝试重复这些字符,while(*c)但是因为你从来没有初始化这个内存块,所以当你取消引用它时,你已经有了未定义的行为*c.

但是要解释这种情况,你很有可能在调试模式下运行它,在这种情况下,返回的所有内容都很有可能new被清零内存(调试器想要很好),这意味着你的while循环将立即终止.使用for循环代替或显式循环直到某个数字.