C语言声明时 *、()、[]的优先级

数组名后面的 [ ] 和 ( ) 具有相同的优先级,它们的优先级高于 *.

例如:

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个元素的数组

猜你喜欢

转载自www.cnblogs.com/hwkj/p/11811185.html
今日推荐