c - 本指南中的 "And since arrays are actually pointers"是什么意思?

标签 c arrays pointers

我正在学习 C,目前在指针部分:http://www.learn-c.org/en/Pointers

指南中有一处写道:

And since arrays are actually pointers...

数组实际上是指针吗?我知道如果我创建 char array[20]array 是数组第一个元素的内存地址,(它“指向”那个,还是只是持有值),对吗?他们是这个意思吗?

我理解的数组就是内存地址的序列,下标访问[0][1]等只是取值在那些内存地址。我完全离开了吗?

最佳答案

您不必相信您在 Internet 上找到的所有内容:数组不是指针。在某些情况下,数组和指针的处理方式相同,但在大多数情况下,数组是数组,而不是指针。

使数组不同于指针的最重要方面是

  • 数组有一个特定的数据区域;指针在使用前需要与存储区域相关联
  • 数组不能重新分配以引用内存中的不同位置
  • 数组有一个特定的大小,可以通过sizeof获取
  • 如果数组成员包含在结构中,数组数据将被复制

数组和指针行为相同的一个上下文是将它们传递给一个函数:在这种情况下,编译器获取数组的地址,从中生成一个指针,然后将该指针传递给一个函数。该过程有时称为“数组衰减为指针”。

关于c - 本指南中的 "And since arrays are actually pointers"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22075346/

相关文章:

c++ - 删除指针成员变量的数组内存

c - 如果我将 printf 方法中的所有 %X 替换为 %p 会怎样

c - 传递给 execve 的参数会发生什么情况?

c - 坚持使用 USART stm32f103rct6

c - 是否可以使用函数获取数组的长度?

非指针的c++ vector

pointers - 相等的指针是不同的?

c - 短路评估是否保证评估顺序?

c - 为什么将函数参数标记为 volatile

javascript - 需要在 React Native 中将对象转换为 FlatList 的数组