对数组地址的理解
1.数组别名本身是一个指针,对数据取下表实际上是先通过下表取指针,然后通过指针取值
- arr指向数组头的指针
- [n]->取得指针后对其进行n位偏移后作 * 对指针取值的操作
2.数组本身是被编译器做了优化的,arr是存放数组第一个元素的指针,那么&arr应该是指向这个指针的指针,然而编译器对其进行了优化,&arr会直接返回arr的值,从而使得本来是指向指针的指针返回了指向数组第一个元素的指针
所以有结论&arr == &arr[0] == arr
为了证明这个,可以看以下代码
int main() { int a[] = { 1, 2, 3, 4}; int i = 0