<pre name="code" class="cpp">#include <stdio.h>
//指针数组
int main(int argc, const char *argv[])
{
int a = 10;
int b = 20;
int c[5] = {0,1,2,3,4};
//指针数组,本质是数组,元素是指针类型
//申明一个大小为3的指针数组
int *p[3];
p[0] = &a; //给第一个元素赋值变量a的地址
p[1] = &b; //给第二个元素赋值变量a的地址
p[2] = &c[1];//给第三个元素赋值数组c的第二个元素的地址
printf("a = %d\n",a); //10
printf("*p[0] = %d\n",*p[0]);//获取指针数组第1个元素的值(内存地址) 并获取该内存地址对应的值 10
printf("b = %d\n",b);//20
printf("*p[1] = %d\n",*p[1]);//获取指针数组第1个元素的值(内存地址) 并获取该内存地址对应的值 20
printf("*c[3] = %d\n",c[3]); //数组变量C向前移动三个单位 并取值 3
printf("*(p[2]+2) = %d\n",*(p[2]+2));//指针数组向前移动2个单位并取值(该值为内存地址),再向前移动两个单位 取值 3
printf("p[2][2] = %d\n",p[2][2]); //同上 3
return 0;
}
#include <stdio.h>
//数组指针
int main(int argc, const char *argv[])
{
int a[3][4] = {{0,1,2,3},
{4,5,6,7},
{8,9,10,11}};
//定义一个数组指针,并赋值
int (*p)[4] = a;
//以数组变量来取值
printf("%d\n",a[1][2]);
printf("%d\n",*(a[1]+2));
printf("%d\n",*(*(a+1)+2));
//以指针变量来取值
printf("%d\n",p[1][2]);
printf("%d\n",*(p[1]+2));
printf("%d\n",*(*(p+1)+2));
// int b[4] = {10,11,12,13};
// p = &b; //也可以指向一维数组
return 0;
}