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個元素的數組

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章