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