如果一個(gè)數(shù)組的每個(gè)元素都是指針變量,這個(gè)數(shù)組就是指針數(shù)組。指針數(shù)組的每個(gè)元素都必須是同一類(lèi)型的指針。
聲明一維指針數(shù)組的語(yǔ)法形式:
數(shù)據(jù)類(lèi)型*數(shù)組名[下標(biāo)表達(dá)式];
int *p[3];
聲明了一個(gè)int類(lèi)型的指針數(shù)組p,其中有3個(gè)元素,每個(gè)元素都是指向int類(lèi)型數(shù)據(jù)的指針。
由于指針數(shù)組的每一個(gè)元素都是一個(gè)指針,必須先賦值在引用,因此聲明數(shù)組后,對(duì)指針元素賦初值是必不可少的。
【例】利用指針數(shù)組輸出一個(gè)3行3列單位矩陣
單位矩陣是主對(duì)角線元素為1,其余元素為0的矩陣。
int main()
{
int a[3] = { 1,0,0 };//定義數(shù)組,矩陣第一行
int b[3] = { 0,1,0 };//定義數(shù)組,矩陣第二行
int c[3] = { 0,0,1 };//定義數(shù)組,矩陣第三行
int* p[3] = { a,b,c };//定義整型指針數(shù)組并初始化
for (int i = 0; i < 3; i++)//對(duì)指針數(shù)組元素循環(huán)
{
for (int j = 0; j < 3; j++)//對(duì)矩陣每一行進(jìn)行循環(huán)
{
cout << p[i][j]<<" ";
//cout << *(p[i]+j)<<" ";
}
cout << endl;
}
return 0;
}
運(yùn)行結(jié)果:
int arr[3][3]={{1,2,3},{2,3,4},{3,4,5}};
盡管指針數(shù)組與二維數(shù)組存在本質(zhì)上的差異,但二者具有相同的訪問(wèn)形式,可以把二維數(shù)組當(dāng)作指針數(shù)組來(lái)訪問(wèn)。
【例】二維數(shù)組舉例
int main()
{
int arr[3][3] = { {1,2,3},{2,3,4},{3,4,5} };
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
cout << *(*(arr+i)+j) << " ";//逐個(gè)輸出二維數(shù)組第i行的元素
}
cout << endl;
}
return 0;
}
運(yùn)行結(jié)果:
*(*(arr+i)+j)
這就是arr數(shù)組的第i行j列元素,對(duì)應(yīng)使用下標(biāo)表示的arr[i][j]
。
因篇幅問(wèn)題不能全部顯示,請(qǐng)點(diǎn)此查看更多更全內(nèi)容
Copyright ? 2019- 91gzw.com 版權(quán)所有 湘ICP備2023023988號(hào)-2
違法及侵權(quán)請(qǐng)聯(lián)系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市萬(wàn)商天勤律師事務(wù)所王興未律師提供法律服務(wù)