名稱:二維數組的幾種表示方法ios
說明:經常使用的有如下幾種二維數組的表示方法:編程
第一種是普通的二維數組的表示方法。數組
第二種是用一維數組來表示二維數組,從顯示的元素地址能夠看出,二維數組和一維數組表示的二維數組在內存中的儲存方式實際上是同樣的,不過使用二維數組看起來要簡單些,只要不用進行地址轉換。學習
第三種表示是用指針數組。本例中的c[i]中的元素實際上是地址。這種方法對各個元素大小不同的狀況下比較適用。如:假定有若干個不等長字符串須要咱們處理,若是使用a [i ][j]結構,則j必須取這些字符串長度的最大值, 顯然這種方法浪費空間。spa
若是採用* 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++編程!彎道超車,快人一步!筆者這裏或許能夠幫到你~blog
歡迎轉行和學習編程的夥伴,利用更多的資料學習成長比本身琢磨更快哦!內存
編程學習: