为什么char*a[]是指针数组,char(*a)[]是数组指针?二者结合顺序不是一样的吗?

1.   *、a和[]结合的优先级是相同的,即他们的结合顺序是从左到右那就错了。

2.  关键核心在于对  []  的理解:

  2.1  []  不是说中括号,也不是数据类型。

  2.2  []  == *(&左边变量名+0)  ,如char*a[]==char*(&a+0)。  可以看到 []  变成了小括号先和a结合了,所有变量的类型是数组。至于这个数组是什么类型,由剩下的的修饰符决定。这里剩下的修饰符是char*, 所有它是char* 类型的数组。

 

posted @ 2023-04-25 16:59  败人两字非傲即惰  阅读(21)  评论(0编辑  收藏  举报