回覆列表
  • 1 # 使用者7744992489391

    1.設p是指向二維陣列a[m][n]的指標變數,則有:int* p=a[0];//此時P是指向一維陣列的指標。P++後,p指向 a[0][1]。2.如果定義int (*p1)[n];p1=a;p1++後,p1指向a[1][0]; 則p+j將指向a[0]陣列中的元素a[0][j]。由於a[0]、a[1]┅a[M-1]等各個行陣列依次連續儲存,則對於a陣列中的任一元素a[i][j],指標的一般形式如下:p+i*N+j, 相應的如果用p1來表示,則為*(p1+i)+j。元素a[i][j]相應的指標表示為:*( p+i*N+j) ,相應的如果用p1來表示,則為*(*(p1+i)+j)。同樣,a[i][j]也可使用指標下標法表示,如p[i*N+j]。若有:int *p=a[0];則陣列a的元素a[1][2]對應的指標為:p+1*4+2元素a[1][2]也就可以表示為:*( p+1*4+2)用下標表示法,a[1][2]表示為:p[1*4+2]擴充套件資料:指標與陣列的關係:1.指標陣列:就是一個由指標組成的陣列,那個陣列的各個元素都是指標,指向某個記憶體地址。 char *p[10]; //p是一個指標陣列2.陣列指標:陣列名本身就是一個指標,指向陣列的首地址。注意這是一個常數。example:char (*p)[10]; //p是一個數組指標3.函式指標:本身是一個指標,指向一個函式入口地址,透過該指標可呼叫其指向的函式,使用函式指標可實現回撥函式。參考資料:

  • 中秋節和大豐收的關聯?
  • 每天一兩點睡覺,怎樣才會調整過來?