数组指针:指向数组名的指针,即保存的是首元素的地址。
int arr[]={1,2,3,4,}; //一维素组 int brr[][2]={1,2,3,4}; //二维数组 int crr[][2][2]={1,2,3,4,5,6}; //三维数组 int *pa=arr; //一维指针 int (*pb)[2]=brr; //二维指针 int (*pc)[2][2]=crr; //三维指针
一维素组:
int arr[]={1,2,3,4,}; //一维素组int *pa=arr; //一维指针
arr(数组名):一维数组首元素地址;
arr+1:一维数组第二个元素的地址;
二维数组:
int brr[][2]={1,2,3,4}; //二维数组
int (*pb)[2]=brr; //二维指针
brr(数组名):二维数组首行地址;
brr+1:数组第二行的地址;
brr[0]:二维数组首元素的地址;
brr[0]+1:二维数组第二个元素的地址;
brr[0][0]:二维数组首元素的值;
三维数组:
int crr[][2][2]={1,2,3,4,5,6}; //三维数组,深度为1;
int (*pc)[2][2]=crr; //三维指针
crr(数组名):三维数组首行的地址(深度为0);
crr+1:三维数组第二行的地址(深度为0);
crr[0]:三维数组首行的首元素的地址(深度为0);
crr[0]+1:三维数组首行的第二个元素的地址(深度为0);
crr[0][0]:三维数组首行首元素的首元素的地址(深度为1);
crr[0][0]+1:三维数组首行首元素的第二个元素的地址(深度为1);
crr[0][0][0]:三维数组首行首元素的首元素的值(深度为1);
指针数组:数组元素全为指针的数组(数组的用法基本适用)。
如:
char *arr[3][7]={"123456","456","789"}; //系统分配3*7个空间(连续)
arr[0]:存储“123456”元素的地址;
(\0为字符串结束标志,若空间足够系统自动添加)
char *brr[3]={"12","4567","7891011"}; //系统自己检测分配(不一定连续)
brr[0]:存储的是“12”元素的地址;
指针数组中每一个元素所指的字符串可以不等长,通过指针间接访问数组中的元素,但是无法修改某一个字符。