鑑於以下代碼:非空終止陣列++
#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
根據環境的不同,您的容器之後的內存可能會用零初始化,導致空終止符發生在那裏。然而,這是不能保證的,所以它可能發生在另一臺機器上/不同的編譯器設置/不同的事情上。 –
未定義的行爲,您可以預測運行時的代碼行爲。 –