【概念】
指针数组:顾名思义,就是指数组的元素都是指针的数组。指针是定语,数组是中心词,指针修饰数组---指针的数组,也就是指 针构成的数组。
数组指针:顾名思义,就是指向数组的指针。数组是定语,指针是中心词,数组修饰指针----数组的指针。
【定义方式】
先看看基本类型变量定义方法,
int a;
说明:这是定义一个int型变量,int修饰的是a,所以a是int型变量
int *a;
说明:有了*这个符号来修饰a,那么a就变成了一个指针,而int不再修饰a,而是修饰*a了,也就是说*a是一个int型变量,所以a指向了一个int型变量
同理,
int a[5];
说明:[5]修饰a,于是a就变成了一个地址,int修饰a[5],而不是修饰a,所以这个数组的所有元素都是int型变量
int *a[5];
说明:此时*修饰的是a[5],即修饰数组的全部元素,所以数组a中的全部元素都是指针变量,而int则是修饰*a[5],也就是说(*a[n])(其中n=0~5)是一个int型变量,换言之,数组中的所有元素都是指向int型变量的指针。
int (*a)[5];
说明:此时*修饰的是a,而不是a[5],所以a才是指针变量,int则是修饰(*a)[5],所以数组元素都是int型变量,换句话说指针a指向了一个元素为int型变量的数组。
【总结】
先看指针符号修饰谁;再看类型关键字修饰谁。