【问题标题】:Storage Concerning Arrays and Pointers关于数组和指针的存储
【发布时间】:2013-01-13 02:37:28
【问题描述】:

我无法理解以下代码:

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

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

还有,是指针常量,还是数组常量?

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

提前致谢。

【问题讨论】:

    标签: c arrays pointers constants


    【解决方案1】:

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

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

    所以:

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

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

    在 ASCII 艺术中:

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

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

    【讨论】:

    • "数组也不是"很好,数组是 const 是什么意思?
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-13
      • 1970-01-01
      • 2021-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-11
      • 1970-01-01
      相关资源
      最近更新 更多