C中的数组是通过指针使用的吗?

Sim*_*ity 0 c arrays pointers

我在这里发布的一个问题:C++ - 类问题

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

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

这是怎么做到的?并且,如果可能的话,你能通过一个例子澄清这一点吗?

谢谢.

Mic*_*urr 5

这意味着什么可能是一些事情:

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主要异常的操作的操作数).