我无法理解以下代码:
const char *suit[4] = {"Hearts", "Diamonds", "Clubs", "Spades"}
我不明白数组套装中存储了什么,它们是指针吗?如果是这样,字符串存储在哪里?
另外,是指针常量还是数组常量?
我将不胜感激此代码的完整详细说明,以及内存中发生了什么!
提前致谢。
我们通过使用cdecl.org学到了很多东西。这就是它告诉我们的suit
:
将西装声明为指向 const char 的指针的数组 4
所以:
char
(在这种情况下,每个字符串的第一个字符)。const
,数组也不是。字符串是文字;它们的存储位置是特定于实现的。
在 ASCII 艺术中:
"Clubs"
^
| "Spades"
| ^
| |
+---+---+---+---+
suit | | | | |
+---+---+---+---+
| |
| v
| "Diamonds"
v
"Hearts"
请注意,suit
它本身不是指针;它是数组的名称。
const char *
是字符串类型,因为字符串只是字符数组。const char *
这意味着您有一个(字符串)数组。字符串本身是常量,编译时存储在文件二进制文件的 .data 部分中。因此,指针指向的数据是恒定的。