c - 关于数组和指针的存储

标签 c arrays pointers constants

我无法理解以下代码:

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

我不明白array suit里面存的是什么,是指针吗?如果是这样,字符串存储在哪里?

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

如果能完整详细地解释这段代码,以及内存中发生了什么,我将不胜感激!

提前致谢。

最佳答案

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

declare suit as array 4 of pointer to const char

所以:

  • 该数组包含 4 个指针。
  • 每个指针指向一个char(在本例中,是每个字符串的第一个字符)。
  • 指针不是const,数组也不是。

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

在 ASCII 艺术中:

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

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

关于c - 关于数组和指针的存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14300131/

相关文章:

c - XPutImage 不显示任何内容

c - Linux C++ : test of the cacheline size performance effect not as expected

c - 是否可以在没有分号的情况下执行 "C"语句

java - 如何将数据数组附加到未知大小的数组

pointers - 具有混合返回/签名类型的 Go 函数

c - 如何根据 C 中的多个定界符分隔字符串?

arrays - 有什么方法可以改善此Powershell阵列随机播放方法吗?

Ruby - 使用返回的方法值填充和排列

c - 查找元素是否在指定数组中

C- printf() 正在覆盖我的变量