在C中,如果我们有一个像阵列a[10],然后a与&a具有相同的指针值(但不相同的类型).我想知道为什么C这样设计?
这是为了节省存储所需的额外空间&a吗?......当你想到a永远不会指向任何其他位置的事实时,这是有道理的,因此存储&a是没有意义的.
Jam*_*lis 11
事实上,
a永远不能指向任何其他位置
但这不是事实.如果a是数组,a则不指向任何位置,因为a它不是指针.给定int a[42];,a命名一个包含42个int对象的数组; 它不是一个指向42个int对象数组的指针(也就是说int (*a)[42];).
&x给你对象的地址x; if x是一个数组类型变量,然后&x给你数组的地址; 如果没有别的,这与&任何其他对象的行为一致.
一个更好的问题是"为什么数组(如a)在大多数情况下使用它时会衰减到指向其初始元素的指针?" 虽然我不确定为什么语言是这样设计的,但它确实使得许多事情的规范变得更加简单,特别是,使用数组的算法实际上与使用指针的算术相同.
| 归档时间: |
|
| 查看次数: |
2286 次 |
| 最近记录: |