数组名后面的 [ ] 和 ( ) 具有相同的优先级,它们的优先级高于 *.
例如:
int *a[10] , [10]先和a结合,它声明了一个含有10个元素的数组,其中每个元素都是指向 int 类型的指针.
int (* a)[10], ( ) 和 [ ] 优先级相同,并且都是从左向右结合,* 和 a 先结合,因此 a 是一个指向数组的指针,该指针内含10个元素.
int a[10[[20] , 声明了一个 10 * 20 的二维数组.
int a[10][20] , 的优先级低于[10] , [10] 先和 a 结合, 因此 a 首先是一个内含10个元素的数组,再与 [20] 结合,所以 a 的每个元素都是内含20个元素的数组. * 说明这些元素都是指针, 最后 int 表明这些元素都是指向 int 类型的指针. 所以 a是一个内含10个元素的数组,其中每个元素都都是由内含20个指向 int 类型的指针组成的数组.总的来说, a 是一个二维数组.
int (* a[10])[20], ( * a[10]) 和 [20] 优先级相同,并且从左向右结合, (* a[10]) 中 , [10] 的优先级高于 *,因此它声明了一个内含10个指针元素的数组,其中每个指针都指向一个内含20个元素的数组
C语言数组与指针解析
本文详细解析了C语言中数组与指针的结合使用,包括数组名后的[]和()的优先级规则,以及如何正确理解如int *a[10]、int (*a)[10]和int a[10][20]等复杂声明,帮助读者深入掌握C语言的数据类型声明。
2353

被折叠的 条评论
为什么被折叠?



