![](/img/trans.png)
[英]In this example for the C++ Documentation Tutorial, why are the pointers declared twice?
[英]C++ - Arrays of Pointers, why is it declared this way?
不確定標題的字詞,但希望其准確一些。
我從一本書中找到了這段代碼,但對於為什么這樣聲明(對於C ++來說是新的)以及它的實際含義感到困惑,因為這本書沒有很好地解釋它並使我更加困惑:
const char * const suit[4] = {"Hearts", "Diamonds", "Clubs", "Spades"};
我不了解2 const聲明的使用以及字符串數組實際上是字符數組的方式。 因此,如果這些是C弦,它們的長度應該不是4嗎? 還是因為它們是指針,這是否僅表示它指向每個字符串的第一個字符?
只需要一些人向我解釋發生了什么,謝謝!
字符串數組實際上是字符數組的方式。
不是。 suit
是一組指向字符的指針 。 因此,您總共有4個指針,每個指針指向相應字符串的第一個字符。
也許一些ASCII藝術會有所幫助?
+---+---+---+---+---+---+---+
| H | e | a | r | t | s |NUL|
+---+---+---+---+---+---+---+
^
| +---+---+---+---+---+---+---+---+---+
| | D | i | a | m | o | n | d | s |NUL|
| +---+---+---+---+---+---+---+---+---+
| ^
| | +---+---+---+---+---+---+
| | | C | l | u | b | s |NUL|
| | +---+---+---+---+---+---+
| | ^
| | | +---+---+---+---+---+---+---+
| | | | S | p | a | d | e | s |NUL|
| | | +---+---+---+---+---+---+---+
| | | ^
+-|-+-|-+-|-+-|-+
suit | * | * | * | * |
+---+---+---+---+
我不明白2 const聲明的使用
第一個const
表示字符不會更改,第二個const
表示指針不會更改。
字符串文字是只讀存儲器中的一個數組(意味着該數組中的char
本質上是不可變的)。 我們通常使用指向第一個字符的指針來表示C樣式的字符串。 對於char
為const
的文字,此指針的類型為const char*
。
如果需要4個不可變C樣式字符串的數組,則可以聲明以下內容:
const char* arr[4];
該數組的每個元素都是一個指針,您可以指向C樣式字符串中的第一個字符。 如果您不需要自己更改數組中的指針,則還可以將指針聲明為const
:
const char* const arr[4];
為了清楚起見,這里的4是我們指向的C樣式字符串的數量。 在您的情況下,一副紙牌中的4套西裝中的每套都有一根繩子。
const char * const suit[4]
這表示suit
是const pointer
const char
的4個const pointer
數組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.