行指針的用法 c語(yǔ)言中的列指針是指向元素的指針嗎,怎么區(qū)別行指針與列指針?
c語(yǔ)言中的列指針是指向元素的指針嗎,怎么區(qū)別行指針與列指針?(*P)[x]只表示P是指向具有x列的一維數(shù)組的指針。指針的類型(即一維數(shù)組元素的類型)需要聲明,X的大小需要寫清楚,否則P不可用。P確實(shí)是
c語(yǔ)言中的列指針是指向元素的指針嗎,怎么區(qū)別行指針與列指針?
(*P)[x]只表示P是指向具有x列的一維數(shù)組的指針。指針的類型(即一維數(shù)組元素的類型)需要聲明,X的大小需要寫清楚,否則P不可用。P確實(shí)是一個(gè)行指針,它指向一個(gè)一維組的行,但是一維數(shù)組的長(zhǎng)度不是用列數(shù)來表示的嗎?至于P指向哪一行,則由代碼為其賦值。例如,如果int a[3][4],(*P[4],P=a,則P指向第一行(第一個(gè)下標(biāo)為0的行),p1指向第二行(第一個(gè)下標(biāo)1),p2指向第三行(第一個(gè)下標(biāo)2)。如果沒有賦值(P=a未寫入),則P只是指向具有4列的int類型數(shù)組的指針(即數(shù)組的長(zhǎng)度為4)。此時(shí)它仍然是一個(gè)野指針,沒有特定的點(diǎn)
C語(yǔ)言行指針?
例如,定義一個(gè)二維數(shù)組int a[3][4]={1,2,3,4},{5,6,7,8},{9,10,11,12}數(shù)組名,a是行指針,[0]是列指針。以本例為例,雖然a和a[0]地址相同,但指針類型不同,指針類型不同1運(yùn)算,顯然結(jié)果不同,所以(row pointer)1中的“1”表示一行中所有元素占用的字節(jié)數(shù),而a[0]1,其中1是元素占用的字節(jié)數(shù),是兩個(gè)不同的概念。為了解釋這個(gè)令人困惑的問題,我們可以用軍事訓(xùn)練中的排隊(duì)點(diǎn)名來解釋。班長(zhǎng)逐一檢查班里的士兵是否在排隊(duì)。班長(zhǎng)每次移動(dòng)都會(huì)經(jīng)過一個(gè)士兵,而排長(zhǎng)只檢查排里的所有班級(jí)是否都在場(chǎng)。排長(zhǎng)只從0班出發(fā)點(diǎn)到1班出發(fā)點(diǎn)。他似乎只走了一步,但實(shí)際上他跳過了10個(gè)士兵,這相當(dāng)于一個(gè)1。班長(zhǎng)面向士兵,排長(zhǎng)面向班級(jí),班長(zhǎng)相當(dāng)于列指針,排長(zhǎng)相當(dāng)于行指針。為了在一個(gè)類中找到一個(gè)士兵,我們必須給出兩個(gè)參數(shù)
inta[2][3]={1,2,3},{4,5,6}
for(inti=0I
{
intsum=0
for(intj=0j
{
sum=*(*(ai)J)
}]cout
}