对于复杂类型的描述(这个还不太算很复杂),首先你一定要知道构造符号的三对(个)运算符:* [] ()
[]和()的结合性很强,而*的结合力较弱;
[]和()采用从左到右的结合方式,而*是从右向左。
你的例子中:
int *a[N];/*首先a是一个数组,因为a的后面紧跟了一个[],它的优先级是很高的(比*高),其次它的每一个元素a[0]、a[1]、a[2]、 a[3]....都是一个指针,是一个int型的指针,实际上关于指针的类型只是一种表示方法与叫法而已,每一种指针都是一样的,我们说一个指针的类型是 指它所能指向的类型,比方说这里的每个指针元素都指向一个int型的整数。*/
int (*a)[N];/*首先a是一个指针,因为*a外面有一对(),其次这针指向具有16个元素的整型数组,因为后面有一对 []*/
总之优先级:()>[]>*
[]和()的结合性很强,而*的结合力较弱;
[]和()采用从左到右的结合方式,而*是从右向左。
你的例子中:
int *a[N];/*首先a是一个数组,因为a的后面紧跟了一个[],它的优先级是很高的(比*高),其次它的每一个元素a[0]、a[1]、a[2]、 a[3]....都是一个指针,是一个int型的指针,实际上关于指针的类型只是一种表示方法与叫法而已,每一种指针都是一样的,我们说一个指针的类型是 指它所能指向的类型,比方说这里的每个指针元素都指向一个int型的整数。*/
int (*a)[N];/*首先a是一个指针,因为*a外面有一对(),其次这针指向具有16个元素的整型数组,因为后面有一对 []*/
总之优先级:()>[]>*