香港專業教育學院進行了廣泛的研究,結果發現,通常的方法來初始化字符的二維數組二維數組
char *strings[2][50];
但是,這不是本一樣,
什麼這兩行代碼之間的區別是什麼?我知道一個是指針,另一個不是。然而,實際上,如果你知道綁定的數組的大小,爲什麼你會使用一個指針呢?哪個代碼更實用,爲什麼?謝謝。我想創建一個字符串數組。
香港專業教育學院進行了廣泛的研究,結果發現,通常的方法來初始化字符的二維數組二維數組
char *strings[2][50];
但是,這不是本一樣,
什麼這兩行代碼之間的區別是什麼?我知道一個是指針,另一個不是。然而,實際上,如果你知道綁定的數組的大小,爲什麼你會使用一個指針呢?哪個代碼更實用,爲什麼?謝謝。我想創建一個字符串數組。
首先表達給你兩個指針長度的字符串50
第二個給你兩個字符串的長度,如果50
這一切都取決於你想與這些字符串做的:他們在已知高級的,固定的或可變的,你是否想對它們使用字符或字符串操作。
如果使用string.h中定義的任何字符串函數,最好使用指針表單,因爲它們只將字符串指針作爲參數。
字符的二維數組(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
是一個字符串數組
你基本上問什麼是指針之間的差值爲'char'和'char'。 – LogicStuff
這些字符串是固定長度還是有上限? –
@EdHeal他們有一個固定的長度 – user859385