a型別是屬於type *(type是你事先給a定義的型別)的,即type型指標。所以a的值是一個記憶體地址。若a是一維陣列,則a指向的是第一個元素。若a是二維陣列,也可以將a看成一個一維陣列,那麼其元素是其行向量。例如{{2,2},{3,4}}。既然a又看成一維陣列,那麼*a即是其第一個“元素”——其第一行。而第一行亦是一個數組,所以*a是第一行這個陣列的指標。那麼,**a即第一行的第一個元素a[0][0],而*(*a+1)則是第一行的第二個元素a[0][1]。下面的例子中,說明a與*a的值相同,但是需要注意的是地址相同,也並不意味著他們的指向的地方相同。事實不仿試一下a+1與*a+1,會發現二者並不相等。正是因為其意義不同。正是其意義的不同,所以可以透過地址運算,表示出相應位置的元素,比如說*(*(a+1)+1),表示的就是a[1][1]。若a是高維的,其本質還是陣列的巢狀,所以根據上面的方法易得出。下面這個例子正是一個很好的說明吧。(其實我是看到這裡才明白是怎麼回事的。)
a型別是屬於type *(type是你事先給a定義的型別)的,即type型指標。所以a的值是一個記憶體地址。若a是一維陣列,則a指向的是第一個元素。若a是二維陣列,也可以將a看成一個一維陣列,那麼其元素是其行向量。例如{{2,2},{3,4}}。既然a又看成一維陣列,那麼*a即是其第一個“元素”——其第一行。而第一行亦是一個數組,所以*a是第一行這個陣列的指標。那麼,**a即第一行的第一個元素a[0][0],而*(*a+1)則是第一行的第二個元素a[0][1]。下面的例子中,說明a與*a的值相同,但是需要注意的是地址相同,也並不意味著他們的指向的地方相同。事實不仿試一下a+1與*a+1,會發現二者並不相等。正是因為其意義不同。正是其意義的不同,所以可以透過地址運算,表示出相應位置的元素,比如說*(*(a+1)+1),表示的就是a[1][1]。若a是高維的,其本質還是陣列的巢狀,所以根據上面的方法易得出。下面這個例子正是一個很好的說明吧。(其實我是看到這裡才明白是怎麼回事的。)