一学就会的数组指针的例子过程:
#include<stdio.h>
int main()
{
int a[3][3]={
{1,2,3},
{4,5,6},
{7,8,9}
};
int (*p)[3]=a; //数组指针
printf("a[1][2] is =%d\n",a[1][2]); //输出6
printf("p5 is =%d\n",*(*p+5)); //输出6
printf("p is =%d\n",**p); //打印1
printf("p[0] is =%d\n",*p[0]); //打印1
printf("p[1] is =%d\n",*p[1]); //打印4
printf("p[2] is =%d\n",*p[2]); //打印7
/********************************/
printf("ptr[0][1] is =%d\n",p[0][1]); //打印2
return 0;
}
这个例子中,首先定义了一个3行3列的二维数组,然后定义了一个数组指针p,并将其指向数组a。这样就可以通过操作指针p来获取a里的元素。
*(*p+5)为什么打印6,打印了和a[1][2]一样的结果。因为数组下标都是从0开始的,a[1][2]是数组第二行第三列的元素。
*(*p+5)呢,*p其实就是a[0][0]的地址,所以*p+5其实就是a[0][0]的地址+5,所以(*p+5)其实就是a[1][2]的地址。
下一篇 C语言结构体