数组指针与指针数组

 数组指针是指向数组首元素的指针,即指针的值为数组首元素的地址,本质是指针。

int(* p)[10];
//()的优先级高,()先将p声明为指针。这里定义了一个指向长度为10的整型数组的指针
//p+i是指 指针移动了i个长度为10的数组。若p指向第一个数组,则p+i指向第i+1个数组
int a[10][10];
p=a;  //p指向a[0]
p++;  //p指向a[1],移动单位是行或者一个长度为10的数组,10个元素为一行,数组指针也叫行指针

 指针数组是数组元素为指针的数组,本质为数组,类似于整型数组、字符数组等。整型数组的数组元素为整型的数字,字符数组的数组元素为字符。比如:char *days[7]; days数组的每一个元素都是字符型指针变量。指针数组和其它数组一样,它们都可以在定义时初始化,也可以用赋值语句对其初始化。比如:

char* days[7]={"Sunday","Monday","Tuesday","Wed","Thur","Fri","Sat"};  //[]结合性优先级比*高
int a[7][5];
for (int i =0;i<7;i++) days[i]=a[i];
//用指针访问二维数组和用数组名访问是一样的
//访问a[i][j]的四种方法:p[i][j]、*(*(p+i)+j)、*(p[i]+j)、(*(p+i))[j]

此时days[0]指向Sunday,days[1]指向Monday,.....,days[6]指向Sat。

总结:数组指针是一个指针变量,在c/c++里专门用来指向二维数组。指针数组是多个指针变量,是数组的一种。

你可能感兴趣的:(数组指针与指针数组)