2017-03-29 37 views
-2

我有一個'char'類型的數組,其中最後一個符號'\ 0'。'char'類型的數組中的最後一個符號C++

#include<iostream> 

void main() 
{ 
    char a[4]; 

    a[0] = 'r'; 
    a[1] = 'r'; 
    a[2] = 'r'; 
    a[3] = '\0'; 

    for (int i = 0; i < 6; i++) 
    { 
     cout << a[i]; 
    } 
    cout << endl; 
} 

因此,當我嘗試輸出比此數組多的符號時,它會在'\ 0'符號後面打印隨機符號。

輸出:

rrr ╠╠ 

我的問題是:如何建立我的陣列後 '\ 0' 符號不符號?

+3

[訪問數組超出範圍不會出現錯誤,爲什麼?](http://stackoverflow.com/questions/1239938/accessing-an-array-out-of-bounds-gives-no-error - 爲什麼) –

+3

你不能。如果你走出界限,你會有*未定義的行爲*。故事結局。 –

+0

你可以。編寫你自己的類CGreatArray。 – KonstantinL

回答

0

首先,這個數組的大小是4,所以當你試圖訪問超出範圍的任何元素時,你就會讀取一個隨機存儲器。其次,'\ 0'字符是一個字符串終止符號。你不需要清除它後面的所有元素。所有的標準IO函數都不會在'\ 0'之後寫入。 您可以嘗試:

cout << a; 

沒有任何循環。

相關問題