<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; }