C语言_指针和数组的几种访问形式
敲几行代码来看看几种访问的形式~
#include <stdio.h>;
int main()
{
int arr[5] = {0, 1, 2, 3, 4, 5}; //初始化5个元素的一维数组
int *p = arr; //定义一个指向数组arr的指针 ,数组类型不需要引用地址符&
printf("arr[2]:%d\n", arr[2]); //①:通过下标直接访问 [通过数组名的指针形式访问 ]
printf("arr[2]:%d\n", *(p+2)); //②:p本身代表一个地址(首地址),p地址本身是第0个,+ 2是第三个地址,然后用*号括起来,取值
printf("arr[2]:%d\n", *(arr+2)); //③:因为是数组类型,本身arr是一个首地址,p和arr都是首地址,直接地址+2,然后取值
printf("arr[2]:%d\n", p[2]); //④:既然p是首地址,那么也可以当做数组,直接下标访问。[通过指针变量名的数组下标形式访问]
//---------分割线
printf("%d\n",*p); //输出为0,数组的首元素。
printf("%d\n",*arr); //输出为0,数组的首元素。
printf("%d\n",p); //输出为地址,数组的地址。
printf("%d\n",arr); //输出为地址,数组的地址。
return 0;
}
编译运行结果截图如下: