位置:首頁 > 軟件操作教程 > 編程開發(fā) > C語言 > 問題詳情

C語言 列指針

提問人:劉團圓發(fā)布時間:2020-12-01

    列指針指向的是二維數(shù)組中某一行的某個具體元素。

    a[0]既是一維數(shù)組的名稱,也是該行的首地址,而且是該行第一個元素的地址a[0]+0; a[0]+1就是第一行第2個元素的地址;a[0]+2就是第一行第3個元素的地址……同樣,對于二維數(shù)組第二行來說a[1]是第二行這個一維數(shù)組(含4個元素)的首地址,a[1]+0是二維數(shù)組第二行第一個元素的地址,a[1]+1是第二行第二個元素的地址……

    可以將列指針理解為行指針的具體元素,而行指針理解為列指針的地址。那么行指針與列指針之間具有怎樣的轉換關系呢?行指針中存放的是列指針的地址,所以,行指針與列指針有如下關系:

    *行指針----列指針

    &列指針----行指針

注意列指針與普通指針定義方式、含義其實是一樣的,只不過針對二維數(shù)組就叫列指針。例如:

    int   a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};

    int   *p;

    p=a[0];

    這里a[0]代表a[0][0]的地址,它與&a[0][0]等效,p的值就是a[0][0]的地址,也就是p指向a[0][0]。p+1就是a[0][1]的地址,若要引用a[0][1]的值可以用*(p+1),因為二維數(shù)組在內存中是以行優(yōu)先的規(guī)律轉換成一維數(shù)組存放在內存中,所以a[0][3]之后存放的是a[1][0],(p+6)指向的就是a[1][2]。

    同理,第二行各元素的地址可以用a[1]+0、a[1]+1、a[1]+2、a[1]+3表示。因為第一行a[0]、第二行a[1]及第三行a[2]可以分別表示為*(a+0)、*(a+1)、*(a+2)。所以二維數(shù)組中任意元素a[i][j]的地址可以表示為a[i]+j或*(a+i)+j,而元素值則表示為*(a[i]+j)或*(*(a+i)+j)。例如,元素a[1][2]可表示為*(a[1]+2)或*(*(a+1)+2)。行指針和列指針的關系如表所示。

行指針

轉換成列指針

列指針等價表示

內容

內容等價表示

含義

aa+0

        *a

a[0]

*a[0]

*(*a)

a[0][0]

a+1

*(a+1)

a[1]

*a[1]

*(*(a+1))

a[1][0]

a+2

*(a+2)

a[2]

*a[2]

*(*(a+2))

a[2][0]

繼續(xù)查找其他問題的答案?

相關視頻回答
回復(0)
返回頂部