2016-12-16 73 views
0

以下方法是否正確初始化char數組?我已經在我的代碼中多次使用過這段代碼,並且在Visual Studio 2015中運行該程序不會顯示任何錯誤。而當我在Visual Studio 2012中編譯相同的程序時,我收到了很多錯誤,主要是使用char數組初始化。 所以,我的問題是可以初始化那種方式嗎?那麼Visual Studio 2012會向我展示一個錯誤的錯誤?在C++中對數組char進行初始化

任何幫助將不勝感激!

char arr[10]={0}; 
+2

它顯示了什麼錯誤? –

+0

這沒什麼錯。如果你得到任何錯誤,你可能會有更多的代碼,而不僅僅是那一行,並且以前的錯誤導致着名的C++級聯錯誤。 – molbdnilo

回答

1

在C++ 11起(其中大致由Visual Studio 2015年極少數遺漏實現),你可以去一個階段進一步編寫

char arr[10] = {};

這將設置每一個元素arr'\0'

如果你能夠:我會試圖放棄VS2012的編譯支持(它並不意味着實現C++ 11標準):C++ 11標準是一個importa nt在C++的開發中大步前進。也就是說,char arr[10] = {0};是有效的C++ 03,您的編譯錯誤是由於您的代碼中的其他錯誤。

1

在C++ 11

{}

用於 「集合初始化」

的聚集體是Arryas,類(結構)和聯合。它取出了初始化數組和類的繁瑣方法,這是之前的情況。空集合初始化用於也可以用於

char arr[5] = {} 

將初始化ARR [0]給Arr 0

struct s { 
    int i; 
    int j; 
}; 
struct s s1 = {}; 
// make s1.i = s1.j = 0; 

骨料[4]具有零

初始化一切例如初始化值如

char str[] {"Test String"}; 
// This is equivalent to 
char str[] = "Test String"; 

一個簡單的整數或任何其他內置的i n個數據類型還可以初始化像

int val { 123 }; 

//相當於 INT VAL = 123;

它也廣泛用於STL初始化。例如

std::array<int, 3> ay{ 1,2,3 };