数组指针
数组指针:本质上它就是一个指针,它是存在与二维以及多维数组中的行指针。
数组指针的定义:数据类型(*指针变量名)【元素的个数】;
定义方法:
int (*p2)[3];
指针数组
指针数组:本质上它就是一个数组,只不过它是由多个指针变量构成的。指针变量存放各自指向的地址。
指针数组的定义:数据类型 * 指针变量名【元素的个数】;
定义方法:
char *p1 = "abc";
char *p2[] = {a, b, c, d};
程序示例
int b[3]= {0, 1, 2};
int *p1 = b; //相当于&b[0]
printf("%p\n", p1);
printf("%p\n", p1+1); //差值为4,一个int的长度
printf("=======================\n");
int (*p2)[3] = &b; //数组指针,p是指向数组的指针 int * (p[3]) 括号可省去 p是指针数组,首先是个数组,数组内存的是指针
printf("%p\n", p2);
printf("%p\n", p2+1); //差值为14,即3个int的长度(整个数组)
输出结果: