C中的数组是通过指针使用的吗?
Posted
技术标签:
【中文标题】C中的数组是通过指针使用的吗?【英文标题】:Arrays in C are used through pointers? 【发布时间】:2011-01-23 08:37:49 【问题描述】:在我在这里发布的一个问题中:C++ - class issue
其中一个来自@SanSS 的回复提到了回复的以下部分:
C 中的数组是通过指针来使用的...
这是怎么做到的?而且,如果可能的话,你能举个例子来澄清一下吗?
谢谢。
【问题讨论】:
这听起来像是一个更笼统的“什么是指针”问题。这里有很多值得一读的答案。如果他们没有涵盖您的答案,您能否完善您的问题? C 中的数组是指针。 SO 和 Google 上有很多 Q/A 可以帮助您... 【参考方案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
操作的操作数)。
【讨论】:
以上是关于C中的数组是通过指针使用的吗?的主要内容,如果未能解决你的问题,请参考以下文章