
名稱:二維陣列的幾種表示方法
說明:常用的有以下幾種二維陣列的表示方法:
第一種是普通的二維陣列的表示方法,
第二種是用一維陣列來表示二維陣列,從顯示的元素地址可以看出,二維陣列和一維陣串列示的二維陣列在記憶體中的儲存方式其實是一樣的,不過使用二維陣列看起來要簡單些,只要不用進行地址轉換,
第三種表示是用指標陣列,本例中的c[i]中的元素其實是地址,這種方法對各個元素大小不一樣的情況下比較適用,如:假定有若干個不等長字串需要我們處理,如果使用a [i ][j]結構,則j必須取這些字串長度的最大值, 顯然這種方法浪費空間,
如果采用* a [i ]結構,則由于a中僅保存每個字串的首地址,而不是串本身,這不僅節約了空間,而且減少了直接對串進行操作的時間,
第四種方式為用指向指標的變數來表示,此種方式p是指向指標的指標,不能把普通的二維陣列的首地址(如本例中的a)賦給它,(因為a不是指向指標的指標),可以把第三種方式中的陣列指標的首地址賦給它,這種方式用的較少,
#include<iostream>
using namespace std;
int main()
{
int a[3][3] = {{0,1,2},{3,4,5},{6,7,8}};
int b[9] = {0,1,2,3,4,5,6,7,8};
int *c[3];
int **p;
cout<<"普通二維陣串列示"<<endl;
for(int i = 0;i<3;++i)
{
for(int j = 0;j<3;++j)
{
cout<<a[i][j]<<"("<<&a[i][j]<<")"<<" "; //括號里是對應元素的地址
//cout<<*(*(a+i)+j)<<" ";
}
cout<<endl;
}
cout<<"普通一維陣串列示"<<endl;
for(int i = 0;i<3;++i)
{
for(int j = 0;j<3;++j)
{
cout<<b[i*3+j]<<"("<<&b[i*3+j]<<")"<<" ";
}
cout<<endl;
}
cout<<"指標陣串列示:"<<endl;
for(int i = 0;i<3;++i)
{
c[i] = *(a+i); //c[i]指向a陣列的第i行首地址
for(int j = 0;j<3;++j)
{
cout<<c[i][j]<<"("<<&c[i][j]<<")"<<" ";
}
cout<<endl;
}
cout<<"指標變數表示"<<endl;
p = c; //p為指向指標的指標,將指標陣列c賦給指標變數p
for(int i = 0;i<3;++i)
{
for(int j = 0;j<3;++j)
{
cout<<p[i][j]<<"("<<&p[i][j]<<")"<<" ";
}
cout<<endl;
}
return 0;
}

另外如果你想更好的提升你的編程能力,學好C語言C++編程!彎道超車,快人一步!筆者這里或許可以幫到你~
分享(原始碼、專案實戰視頻、專案筆記,基礎入門教程)
歡迎轉行和學習編程的伙伴,利用更多的資料學習成長比自己琢磨更快哦!
編程學習:

編程學習:

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/270571.html
標籤:C
上一篇:C語言編程學習:10大基礎演算法
