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