Posted on 2007-06-28 20:24
謝龍飛 閱讀(159)
評論(0) 編輯 收藏 引用
指針和數(shù)組看了很久沒明白過來啊
尤其是什么多維數(shù)組的指針
先來點簡單的 筆記吧
int *p( ) :定義一個返回值為指針的函數(shù)
int (*p)[n]:定義一個指向有n個元素的一維數(shù)組的指針 注意:p+1指向下一個含n個元素的一維數(shù)組
int (*p)( ):定義一個函數(shù)指針
int *p[n]:定義一個指針數(shù)組
int **p:定義一個指向int *類型指針的指針p
對于指針數(shù)組:
如定義一個指針數(shù)組如下
int *p[2];
int a[3]={1,2,3};
int b[3]={4,5,6};
p[0]=a;
p[1]=b;
此時p[0]相當(dāng)于一個指針變量
對一個指針變量a 有a[n]=*(a+n) 如:*a=a[0] *(a+1)=a[1] .................
則有p[0][0]=*(p[0]+0)=1
p[0][1]=*(p[0]+1)=2
p[0][2]=*(p[0]+2)=3
在多維數(shù)組中也要注意運用 a[n]=*(a+n)式子進行與如上相似的變換
如:a[i][j]=*(*(a+i)+j)
上式也是根據(jù)a[n]=*(a+n)變換而來的
首先a[i]=*(a+i)
再來一次類似變換 就有a[i][j]=*(*(a+i)+j)
另注意:對二維數(shù)組:int a[i][j]
a代表的是數(shù)組的首地址 即:第0行 a[0][0]的地址
而a+1代表的不是a[0][1]的地址 而是代表第1行的a[1][0]的地址
a[1]是一個地址即:a[1][0]的地址 因此a[1]+1就是a[1][1]的地址 *(a[1]+1)=a[1][1]