int *a[10] :陣列指標。陣列a裡存放的是10個int型指標 int (*a)[10] :a是指標,指向一個數組。此陣列有10個int型元素 int *a[10] 先找到宣告符a,然後向右看,有[]說明a是個陣列,再向左看,是int *,說明陣列中的每個元素是int *。所以這是一個存放int指標的陣列。 int(*a)[10] 先找到宣告符a,被括號括著,先看括號內的(優先順序高),然後向右看,沒有,向左看,是*,說明s是個指標,什麼指標?在看括號外面的,先向右看,有[] 是個陣列,說明a是個志向陣列的指標,再向左看,是int,說明陣列的每個元素是int。所以,這是一個指向存放int的陣列的指標。 例 int *p[10]; int (*q)[10]; printf( "*p[10]: %d\n ", sizeof(p)); printf( "(*q)[10]: %d\n ", sizeof(q)); 結果是: *p[10]: 40 //說明p是一個數組名 (*q)[10]: 4 //說明q是一個指標
int *a[10] :陣列指標。陣列a裡存放的是10個int型指標 int (*a)[10] :a是指標,指向一個數組。此陣列有10個int型元素 int *a[10] 先找到宣告符a,然後向右看,有[]說明a是個陣列,再向左看,是int *,說明陣列中的每個元素是int *。所以這是一個存放int指標的陣列。 int(*a)[10] 先找到宣告符a,被括號括著,先看括號內的(優先順序高),然後向右看,沒有,向左看,是*,說明s是個指標,什麼指標?在看括號外面的,先向右看,有[] 是個陣列,說明a是個志向陣列的指標,再向左看,是int,說明陣列的每個元素是int。所以,這是一個指向存放int的陣列的指標。 例 int *p[10]; int (*q)[10]; printf( "*p[10]: %d\n ", sizeof(p)); printf( "(*q)[10]: %d\n ", sizeof(q)); 結果是: *p[10]: 40 //說明p是一個數組名 (*q)[10]: 4 //說明q是一個指標