1. 程式人生 > >二維陣列名與地址的對應

二維陣列名與地址的對應

已知int a[3][4];則下列能表示a[1][2]元素值的是?

  • 在多維陣列中,陣列名是第一個陣列的地址.
  • 注意這裡a不是第一個元素的地址,而是第一個維陣列(即a[0],a[0]是一個4元素的陣列)的地址,a[0][0]才是表示的一維陣列第一個元素的地址.
  • 陣列名 + 1表示向下移一層.

本題中,a是一個三行四列的陣列
*(a+1)表示第二行的首地址,和a[1]一樣。
*(a+1)+2第二行第三個數字的地址
(a+1)+2)就是第二行第三個數字的值

其它答案:

  1. a 是一個二級指標,不是一級指標,*(a+1)表示的第二個陣列的地址
  2. *(a+1+2)等於*(a+3)
    ,是一個int *, 表示的是 第4個數組a[3]的地址,而 **(a+3)表示a[3][0]的值,
    *((int *)(a+3)) 也可以表示 a[3][0]的值
  3. (&a[0]+1)表示的是第2個數組 a[1]的地址, (&a[0]+1)[2]其實是陣列a[3]的地址,改成((int *)(&a[0]+1))[2] 才是對的
  4. *(a[0]+1)a[0][1]的值