鉴于以下代码:非空终止阵列++
#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;
}
它在序列中的每个予执行它一次打印这些字符。我不明白为什么循环会终止,因为我没有在容器数组末尾明确指定任何空终止符。请帮忙。
它应该会导致分段错误 – Kunal
根据环境的不同,您的容器之后的内存可能会用零初始化,导致空终止符发生在那里。然而,这是不能保证的,所以它可能发生在另一台机器上/不同的编译器设置/不同的事情上。 –
未定义的行为,您可以预测运行时的代码行为。 –