May*_*ron -1 c++ arrays pointers declaration
不知道如何写标题,但希望它的一些准确.
我从一本书中找到了这个代码,我很困惑为什么它以这种方式声明(对C++来说是新的)以及它实际意味着什么,因为这本书没有很好地解释它并使我更加困惑:
const char * const suit[4] = {"Hearts", "Diamonds", "Clubs", "Spades"};
Run Code Online (Sandbox Code Playgroud)
我不明白使用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 | * | * | * | * |
+---+---+---+---+
Run Code Online (Sandbox Code Playgroud)
我不明白使用2个const声明
第一个const意味着字符不会改变,第二个意味着指针不会改变.
| 归档时间: |
|
| 查看次数: |
91 次 |
| 最近记录: |