指针数组:
我们使用类比法,整形数组,是存放整型的数组,字符数组是存放字符的数组。如下图:
那么指针数组呢?显然,是存放指针的数组。
指针数组的每个元素都是用来存放地址(指针)的。如下图:
数组指针变量:
数组指针变量是指针变量?还是数组?
使用类比法:
整型指针变量:存放的是整型变量的地址,能够指向整形数据的指针。
int * pint;
浮点型指针变量:存放的是浮点型变量的地址,能够指向浮点型数据的指针。
float * pf;
易得,数组指针变量:存放的是数组的地址,能够指向数组的指针变量。
int (*p)[10];
难点:两者容易混淆
数组指针变量为啥要写成int (*p)[10]而不写成int *p[10]呢?
解释:
- []的优先级高于*号
- p只有先与*结合,才能成为指针变量,想要p优先与*结合,必须加上(),然后p指针指向的是一个大小为10个整型的数组。由于p是一个指针,指向一个数组,所以叫数组指针。
- 若p先与[]结合,则代表一个数组,这个数组中存放的元素类型是int *,即整型指针,元素个数是10个,所以叫指针数组。