说明一下指针数组和数组指针?面试中遇到这个问题。分别写下两行代码。
int *p[10];
int (*p)[10];
为什么呢?这要从c语言的运算符优先级入手去理解这个问题。
C语言运算符结合规定:
- 优先级高的先结合
- 同优先级运算符按照规律,从右向左或从左向右
查优先级表 ()> [] > *,所以对于:
//首先是 [10] 明确是数组 数组名字p 保存的类型是 int*
//保存指针的数组
int *p[10]; //即指针数组
//首先是{*p}指针 然后int [10]数组
//指向数组的指针
int (*p)[10];//即数组指针