數(shù)組指針:a pointer to an array ,指向數(shù)組的指針
指針數(shù)組:array of pointer ,用于存儲指針的數(shù)組,即數(shù)組元素都是指針
int (p)[6] 數(shù)組指針 :表示指向數(shù)組a的指針 元素表示:(a)[i] (指向一維數(shù)組的指針,也成行指針)
int p[6] 指針數(shù)組 :表示數(shù)組a中的元素都是int型,即int型指針 元素表示:(a[i]) 或者a[i] ([]優(yōu)先級高于)
代碼:
#include
using namespace std;
int main()
{
int a[4] = { 1,2,3,4 };
int
int(c)[4]; //數(shù)組指針
c = &a; //讓c指向a的首地址
for (int i = 0; i<4; i++)
{
b[i] = &a[i]; //b數(shù)組的元素為指針,即元素內(nèi)容為地址
}
cout <<b[1] << endl; //b[1]=&a[1],即b[1]中為地址(該地址中存入的是數(shù)據(jù)2) , b[1]即取&a[1]中的元素內(nèi)容,即2
cout << (c)[2] << endl;//可將(c)看成數(shù)組名,相當(dāng)于a,(c)[2]=a[2],即為3
return 0;
}
執(zhí)行結(jié)果:
2
3
注意:定義了數(shù)組指針(c)[i],就必須給這個指針一個地址c=&a,不能不給指向(地址)就直接賦值((c)[i]=a[i]),否則會出錯
技巧:可以將數(shù)組指針的(*c)看成一個數(shù)組名使用
數(shù)組指針
int (p)[6] ()優(yōu)先級高,說明p是一個指針,指向一個int型的一維數(shù)組,這個數(shù)組的長度是n,也就是p的步長為n,執(zhí)行p+1(p要跨過n個整型數(shù)據(jù)的長度)
int a[3][4];
int (p)[4]; //定義一個數(shù)組指針,指向含4個元素的以為數(shù)組
p=a; //將二維數(shù)組a的首地址賦給p,即a[0]或&a[0][0]
p++; //該語句執(zhí)行后,即p=p+1,p跨過行a[0]指向了行a[1]
#include
using namespace std;
int main()
{
int a[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};
int(p)[4];
p = a;
cout << (p)[0] << endl;
p++;
cout << (p)[0] << endl;
cout <<((p)+1)<< endl; //((p)+1)相當(dāng)于(p)[1] ,*p此時為一個地址
}
執(zhí)行結(jié)果:
1
5
6
指針數(shù)組 int p[n]
[]優(yōu)先級高,先與p結(jié)合成為一個數(shù)組,再由int說明這是一個整型指針數(shù)組,它由n個指針lexington的元素組成(這里執(zhí)行p+1是錯誤的,這樣賦值也是錯誤的:p=a,p是個不可預(yù)知的表示,只存在p[0],p[1]….p[n-1],它們分別是指針變量可以用來存放變量地址),可以這樣p=a;這里p表示指針數(shù)組第一個元素的值,a的首地址的值
int *p[3]; //表示一個一維數(shù)組內(nèi)存放著三個指針變量,分別是p[0],p[1],p[2]
int a[3][4];
for(i=0;i<3;i++)
p[i]=a[i];
ps:數(shù)組指針只是一個指針變量,它占有內(nèi)存中一個指針的存儲空間,指針數(shù)組是多個指針變量,以數(shù)組形式存在內(nèi)存中,占有多個指針的存儲空間
指針數(shù)組要表示數(shù)組中第i行第j列的元素:
(p[i]+j)((p+i)+j) ((p+i))[j] p[i][j]
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。