溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

數(shù)組指針和指針數(shù)組的區(qū)別

發(fā)布時(shí)間:2020-08-07 08:27:06 來源:網(wǎng)絡(luò) 閱讀:417 作者:_xd_ 欄目:編程語言

數(shù)組指針:a pointer to an array ,指向數(shù)組的指針
指針數(shù)組:array of pointer ,用于存儲(chǔ)指針的數(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)先級(jí)高于
代碼:
#include<iostream>
using namespace std;
int main()
{
int a[4] = { 1,2,3,4 };
int
b[4]; //指針數(shù)組
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],就必須給這個(gè)指針一個(gè)地址c=&a,不能不給指向(地址)就直接賦值((c)[i]=a[i]),否則會(huì)出錯(cuò)
技巧:可以將數(shù)組指針的(*c)看成一個(gè)數(shù)組名使用

數(shù)組指針
int (p)[6] ()優(yōu)先級(jí)高,說明p是一個(gè)指針,指向一個(gè)int型的一維數(shù)組,這個(gè)數(shù)組的長度是n,也就是p的步長為n,執(zhí)行p+1(p要跨過n個(gè)整型數(shù)據(jù)的長度)
int a[3][4];
int (
p)[4]; //定義一個(gè)數(shù)組指針,指向含4個(gè)元素的以為數(shù)組
p=a; //將二維數(shù)組a的首地址賦給p,即a[0]或&a[0][0]
p++; //該語句執(zhí)行后,即p=p+1,p跨過行a[0]指向了行a[1]

#include<iostream>
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此時(shí)為一個(gè)地址

}
執(zhí)行結(jié)果:
1
5
6

指針數(shù)組 int p[n]
[]優(yōu)先級(jí)高,先與p結(jié)合成為一個(gè)數(shù)組,再由int
說明這是一個(gè)整型指針數(shù)組,它由n個(gè)指針lexington的元素組成(這里執(zhí)行p+1是錯(cuò)誤的,這樣賦值也是錯(cuò)誤的:p=a,p是個(gè)不可預(yù)知的表示,只存在p[0],p[1]….p[n-1],它們分別是指針變量可以用來存放變量地址),可以這樣p=a;這里p表示指針數(shù)組第一個(gè)元素的值,a的首地址的值
int *p[3]; //表示一個(gè)一維數(shù)組內(nèi)存放著三個(gè)指針變量,分別是p[0],p[1],p[2]
int a[3][4];
for(i=0;i<3;i++)
p[i]=a[i];

ps:數(shù)組指針只是一個(gè)指針變量,它占有內(nèi)存中一個(gè)指針的存儲(chǔ)空間,指針數(shù)組是多個(gè)指針變量,以數(shù)組形式存在內(nèi)存中,占有多個(gè)指針的存儲(chǔ)空間
指針數(shù)組要表示數(shù)組中第i行第j列的元素:
(p[i]+j) ((p+i)+j) ((p+i))[j] p[i][j]

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI