按字符结合顺序讲,[]的优先级大于*
所以int *p[]
等于int *(p[])
(int *)(p[]) 就是一个指针数组,就是一个数组,里面存放的是指针
int (*p)[]表示p是一个指针,指向一个有n个int值的数组
指针数组
int *a[3]:为什么这里是指针数组,[] 的优先级高于 * ,所以这是一个数组,而 * 修饰数组,所以是指针数组,数组的元素是整型的指针。
示例:
1 | int main() { |
结果:
1 | abc |
数组指针
int (*a)[3]:同样的方式,首先括号的优先级最高,所以 *a 是指针,而 [] 修饰 *a ,所以是数组指针,一个指向 3 个元素的一维数组指针。
示例:
1 | typedef int arr[3]; |
结果:
1 | 1 |
突然找到一篇比较好理解的文章,保存在这里