给出以下代码:

#include<iostream>
int main(){
  char container[] = {'a', 'b', 'c', 'd', 'e', 'f', 'g'};
  for(char* cptr = container; *cptr != 0; cptr++)
    std::cout << *cptr << std::endl;
  return 0;
}

每次执行时,它都会按顺序打印这些字符。我不明白为什么循环会终止,因为我没有在容器数组的末尾明确指定任何空终止符。请帮忙。

最佳答案

真的很幸运。

碰巧与container[7]对应的内存区域为0,所以您很幸运。

超出数组的界限是未定义的行为。在您的情况下,这恰好是您希望的行为,但是您不能依靠它。

09-17 06:54