簡體   English   中英

C ++-指針數組,為什么要這樣聲明?

[英]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樣式的字符串。 對於charconst的文字,此指針的類型為const char*

如果需要4個不可變C樣式字符串的數組,則可以聲明以下內容:

const char* arr[4];

該數組的每個元素都是一個指針,您可以指向C樣式字符串中的第一個字符。 如果您不需要自己更改數組中的指針,則還可以將指針聲明為const

const char* const arr[4];

為了清楚起見,這里的4是我們指向的C樣式字符串的數量。 在您的情況下,一副紙牌中的4套西裝中的每套都有一根繩子。

const char * const suit[4]

這表示suitconst pointer const char的4個const pointer數組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM