1. 程式人生 > >數組指針和指針數組

數組指針和指針數組

存儲 數組指針 hive 分別是 二維數組 指針 www http TP

數組指針(也稱為行指針)

定義:int (*p)[n];

註釋:()優先級高,首先說明p是一個指針,指向一個整型的一維數組,一維數組的長度是n,也可以說是p的步長。也就是說執行p+1時,p要跨越n個整型數據長度。

舉例說明:

int a[3][4];

int (*p)[4];

p=a;//將二維數組的首地址賦給p,也就是a[0]或&a[0][0]

p++;//該語句執行後,p=p+1;p跨過a[0][]指向a[1][]

因此,指向數組的指針也稱指向一維數組的指針,亦稱為行指針。

指針數組

定義:int *p[n];

註釋:[]優先級高,先與p結合組成一個數組,再由int*說明這是一個指針數組,它是有n個指針類型的數組元素。這裏執行p+1時,則p指向下一個數組元素,p=a的賦值是錯誤的,因為p是不可表示,只存在p[0],p[1],....,p[n],而它們分別是指針變量可用於存放變量的地址。但可這樣表示*p=a,*p表示指針數組的第一個元素的值,a的首地址。

舉例說明:

int *p[3];

int a[3][4];

for(int i=0;i<3;i++)

p[i]=a[i];//int *p[3]表示一個一維數組內存放三個指針變量,分別是p[0],p[1],p[2],所以要分別賦值。

數組指針和指針數組的區別

數組指針只是一個指針變量,類似於一個二維數組,它占有內存中一個指針的存儲空間。

指針數組是一個數組,包含多個指針變量,以數組的形式存在內在中,占有多個指針存儲空間。

http://www.cnblogs.com/hongcha717/archive/2010/10/24/1859780.html

數組指針和指針數組