1. 程式人生 > >C語言面試題---指標篇(四)

C語言面試題---指標篇(四)

解析:

首先看最後一個問題, c  是第一個元素的地址, *c  是第一行元素的首地址,其實第一行元素的

地址就是第一個元素的地址, **c  是提取第一個元素。

為什麼 c  , *c  的值相等?

c是陣列名,是一個二維指標,它的值就是陣列的首地址,也即第一行元素的首地址(等於 *c  ),

也等於第一行第一個元素的地址( &c[0][0]  );可以說成是二維陣列的行指標。

*c  是第一行元素的首地址;是一個一維指標,可以說成是二維陣列的列指標。

**c  :二維陣列中的第一個元素的值;即:c[0][0]

所以:c 和 *c的值是相等的,但他們兩者不能相互賦值,(型別不同)


綜上所述, (c+1)  與 (*c+1)  中:

(c+1)  ,c是陣列名也就是二維陣列的行指標,所有 c+1  是移動一行,

將指標指向二維陣列中第二行的首地址,也就是 &c[1][0]  .

而 (*c+1)  中, *c  是二維陣列第一行的首地址,也就是二維陣列的列指標,所以 (*c+1)  ,

移動的是一列,是將指標指向二維陣列第一列的第二個元素,也就是 &c[0][1]

在這里,還需要提醒的一點就是所謂的陣列指標和指標陣列: