行指標,顧名思義就是指向一行的指標。那麼**會用到行指標呢,用的最多的,那就是二維指標了,大家都知道,我們通常把二維指標看成乙個行列式,但是它在記憶體中的排序卻是和一維指標一樣的。
比如組a[2][3]=},a是整個陣列的首位址,同時也指向第一行元素,即a是乙個行指標,它每加1,所指位址移動二維陣列的一行,a+1指向第二行元素。
對a取*,即*a指向第一行第乙個數,*(a+1)指向第二行第乙個數,可見,對行指標取值就成了列指標,此時它還是個指標。它每加1,所指位址移動乙個元素,*(a+1)+1指向第二行第二個元素,也可以寫成a[1]+1。
**a(也可寫成a[0][0])就是這個二維陣列第一行的第乙個元素,**(a+1)(也可寫成a[1][0])就是第二行的第乙個元素,*(*(a+1)+1)(也可寫成a[1][1])是第二行的第二個元素。可見,對行指標取2次*就成了某個元素的值了,而不再是位址。
有這樣乙個公式a[i][j]=*(*(a+i)+j),應該就知道為什麼了吧…
行指標還可以這樣定義int (*p)[n],此處定義的p指標,每加1,移動n個位址位(針對不同二維陣列定義不同的n值)比如下面的這段:
int main(void)
,};int (*p)[3];
p = a;
p++;
printf("%d",**p);
}此段**輸出結果為4,p是個行指標,可以直接將a這個行指標直接賦值給它,此時p也指向二維陣列的起始位址,即第一行。p++就會移動3個元素,從而指向第二行。用法同二維陣列名a
(CED)列指標與行指標的聯絡與區別
列指標 被稱為是指標變數指向二維陣列的某個元素 一般使用時會有如下定義 int a 3 4 int p 而上述 定義的指標p,一般按照下表方式指向二維陣列a中的元素 語法樣例說明 指向任意元素指標變數 陣列名 下標1 下標2 p a 1 2 p指向的元素為7 指向首元素指標變數 陣列名 0 0 指標...
C語言的行指標和列指標
一 定義二維陣列 1 定義方式 資料型別 陣列名 行數 列數 例如 int a 3 4 3行4列 c語言對二維陣列採用的這種特殊的定義方式,使得二維陣列可以被看作一種特殊的一維陣列 它的元素又是乙個一維陣列。例如 上圖中的a可以看出是乙個一維陣列,他有3個元素 a 0 a 1 a 2 每個元素又包含...
二維指標行指標和列指標的區別
二維行指標做輸出時定義及使用 includeint main void p a printf please input the row and colum n scanf d,d i,j printf a d d d n i,j,p i j 二維行指針對每個資料的引用 return 0 二維行指標做...