【发布时间】:2014-10-15 02:11:58
【问题描述】:
我是一名正在学习 C 的学生,正在努力解决一些问题。
假设您有一些多维数组int multi[2][2]。 multi 的值将是指向multi[0] 地址的指针。为简单起见,假设地址为 1000。取消引用multi[0] 会提取另一个地址,这个地址就是multi[0][0] 的地址。反过来,取消引用会为我们获取值(如果在左侧,则返回分配地址。)
现在,multi + 1 返回第二个指针的地址。假设我们有 4 个字节的整数(其中每个嵌套数组有两个),所以multi + 1 返回的地址将为 1008。此地址将包含multi[1][0] 的地址,即 1008。
所以我在这里看到了一个模式:这是否意味着multi[0]、multi[1] 等中的地址包含一个指向它自己的地址的指针?
【问题讨论】:
-
为什么不参考
&multi[0]亲眼看看呢? -
"multi[0], multi[1] 中的地址" -- 里面没有任何地址,里面有数组。这些数组包含整数。这里唯一可以找到的地址是编译器在表达式中使用数组时生成的地址……数组被转换为指针,因为在 C 中,数组不是第一类对象。
标签: c pointers multidimensional-array