数组指针:一个指针指向一个数组。下面示例:
实例一:
#include <stdio.h>
int main()
{
int a[2][3]={1,4,6,8,5,2};
int (*p)[3];
p=a;
int i;
for(i=0;i<5;i++)
{
printf("%d ",(*p)[i]); //输出1,4,6
}
printf("\n");
p++;
for(i=0;i<5;i++)
{
printf("%d ",(*p)[i]); //输出8,5,2
}
}
示例二:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
int a[5]={1,3,5,7,9};
int *ptr=(int *)(&a+1);
printf("%d\n%d\n",*(a+1),*(ptr-1));
}
【注】: &a是数组指针,其类型为int(*)[5],所以a是长度为5的int数组指针,所以要加5*sizeof(int),&a+1是a[5]。而ptr与(&a+1)的类型是不一样的,ptr-1只会减去sizeof(int*)。a与&a的地址是一样的,a是数组的首地址,既a[0]的地址,&a是对象(数组)的首地址。