【问题标题】:Arrays in C are used through pointers?C中的数组是通过指针使用的吗?
【发布时间】:2011-01-23 08:37:49
【问题描述】:

在我在这里发布的一个问题中:C++ - class issue

其中一个来自@SanSS 的回复提到了回复的以下部分:

C 中的数组是通过指针来使用的...

这是怎么做到的?而且,如果可能的话,你能举个例子来澄清一下吗?

谢谢。

【问题讨论】:

  • 这听起来像是一个更笼统的“什么是指针”问题。这里有很多值得一读的答案。如果他们没有涵盖您的答案,您能否完善您的问题?
  • C 中的数组指针。 SO 和 Google 上有很多 Q/A 可以帮助您...

标签: c arrays pointers


【解决方案1】:

这可能意味着几件事:

1) 下标运算符是根据指针算术定义的。 C99 6.5.2.1/2“数组下标”说:

下标运算符[]的定义是E1[E2]等同于(*((E1)+(E2)))。

例如,假设您有一个这样声明的数组:char s[] = "012345";

以下所有计算结果为“4”:

  • s[4]
  • *(s + 4)
  • 4[s] - 这个 不寻常的构造可能会让你大吃一惊, 但由于这种方式 下标由 标准,这相当于*(4 + s),与*(s + 4)相同 和s[4]一样。

2)(与上述密切相关)数组名称在大多数表达式中计算为指向数组第一个元素的指针(作为主要例外的sizeof 操作的操作数)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-18
    • 2014-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-28
    • 2016-08-06
    • 1970-01-01
    相关资源
    最近更新 更多