2016-03-05 122 views
-4

香港專業教育學院進行了廣泛的研究,結果發現,通常的方法來初始化字符的二維數組二維數組

char *strings[2][50]; 

但是,這不是本一樣,

​​

什麼這兩行代碼之間的區別是什麼?我知道一個是指針,另一個不是。然而,實際上,如果你知道綁定的數組的大小,爲什麼你會使用一個指針呢?哪個代碼更實用,爲什麼?謝謝。我想創建一個字符串數組。

+2

你基本上問什麼是指針之間的差值爲'char'和'char'。 – LogicStuff

+0

這些字符串是固定長度還是有上限? –

+0

@EdHeal他們有一個固定的長度 – user859385

回答

-1

首先表達給你兩個指針長度的字符串50

第二個給你兩個字符串的長度,如果50

這一切都取決於你想與這些字符串做的:他們在已知高級的,固定的或可變的,你是否想對它們使用字符或字符串操作。

如果使用string.h中定義的任何字符串函數,最好使用指針表單,因爲它們只將字符串指針作爲參數。

-1

字符的二維數組(A)與字符串數組(B)不同。

在第一行:char *strings[2][50];您需要爲這些字符分配內存。你只聲明2個指針。

在第二行:char strings[2][50]您已經分配了內存。

請小心,因爲在任何這些情況下,您將獲得以空字符結尾的字符串。在使用它們之前,您需要正確初始化這些值。另外,在第二種情況下,如果你犯了一個錯誤,第一個字符串可能會超過第二個字符串。

在現代C++中,最好使用std :: string和std :: array。它會讓你的代碼更安全。我建議如下:

第一種情況:std::array< std::array<char, 50>, 2> case1是和數組

的陣列

第二種情況:std::array< std::string, 2> case2是一個字符串數組