1

我无法理解以下代码:

    const char *suit[4] = {"Hearts", "Diamonds", "Clubs", "Spades"}

我不明白数组套装中存储了什么,它们是指针吗?如果是这样,字符串存储在哪里?

另外,是指针常量还是数组常量?

我将不胜感激此代码的完整详细说明,以及内存中发生了什么!

提前致谢。

4

2 回答 2

2

我们通过使用cdecl.org学到了很多东西。这就是它告诉我们的suit

将西装声明为指向 const char 的指针的数组 4

所以:

  • 该数组包含 4 个指针。
  • 每个指针指向 a char(在这种情况下,每个字符串的第一个字符)。
  • 指针不是const,数组也不是。

字符串是文字;它们的存储位置是特定于实现的。

在 ASCII 艺术中:

              "Clubs"
               ^
               |  "Spades"
               |   ^
               |   |
     +---+---+---+---+
suit |   |   |   |   |
     +---+---+---+---+
       |   |
       |   v
       |  "Diamonds"
       v
      "Hearts"

请注意,suit它本身不是指针;它是数组的名称。

于 2013-01-13T02:41:24.623 回答
1

const char *是字符串类型,因为字符串只是字符数组。const char *这意味着您有一个(字符串)数组。字符串本身是常量,编译时存储在文件二进制文件的 .data 部分中。因此,指针指向的数据是恒定的。

于 2013-01-13T02:39:17.760 回答