关于指针调取数组对应元素地址和数组元素不同表示方法的总结

56 阅读1分钟

1.打印数组内元素的方法

#include <stdio.h>
int main(){
int a [2][3];
printf("%d\n",**a);
printf("%d\n",***&a);
printf("%d\n",*&a[0][0]);
printf("%d\n",*a[0]);
return 0;
}

2.打印数组内元素对应地址的方法

#include <stdio.h>
int main(){
int a [2][3];
printf("%d\n",a);
printf("%d\n",&a);
printf("%d\n",*a);
printf("%d\n",a[0]);
printf("%d\n",&a[0][0]);
return 0;
}
  • 可以理解为我们定义了两个一维数组(每个一维数组包含3个整型元素)
  • 想象为俄罗斯套娃:二维数组的地址->一维数组的指针->元素
  • 值得注意的是 a [ i ]与 * ( a + i )等价,& a [ i ]与(a+i)等价。
  • 我们可以将 * 和 & 想象成 / 和 * ,当*&时可以认为两者抵消。
  • 在这里 * 体现了它的两个用途即指针和解引用。