为什么char*a[]是指针数组,char(*a)[]是数组指针?二者结合顺序不是一样的吗?
1. *、a和[]结合的优先级是相同的,即他们的结合顺序是从左到右那就错了。
2. 关键核心在于对 [] 的理解:
2.1 [] 不是说中括号,也不是数据类型。
2.2 [] == *(&左边变量名+0) ,如char*a[]==char*(&a+0)。 可以看到 [] 变成了小括号先和a结合了,所有变量的类型是数组。至于这个数组是什么类型,由剩下的的修饰符决定。这里剩下的修饰符是char*, 所有它是char* 类型的数组。