亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++二維數組講解、二維數組的聲明和初始化

2020-05-23 14:27:24
字體:
來源:轉載
供稿:網友
我們知道,一維空間是一條線,數學中用一條數軸來表達;二維空間是一個平面,數學中用平面坐標系來表達。那么二維數組又是什么樣的呢?

線與面

我們用一個下標來描述一維數組中的某個元素,就好像在用數描述一條線上的點。而所有的數據都是存儲在一條線上。如果我們采用兩個下標,就能形成一個平面,猶如一張表格,有行有列,所有的數據就能夠存放到表格里。
C++二維數組講解、二維數組的聲明和初始化

我們把二維數組的兩個下標分別稱為行下標和列下標,在前面的是行下標,在后面的是列下標。

那么什么時候要用二維數組呢?一般有兩種情況,一種是描述一個二維的事物。比如用1表示墻,用0表示通路,我們可以用二維數組來描述一個迷宮地圖;用1表示有通路,0表示沒有通路,我們可以用二維數組來描述幾個城市之間的交通情況。還有一種是描述多個具有多項屬性的事物。比如有多個學生,每個學生有語文、數學和英語三門成績,我們就可以用二維數組來描述。

對于第二種情況,我們要注意各項屬性應該是同一種數據類型,比如三種學科的成績都是整數。如果出現了姓名(字符串屬性),就不能將他們組合到一個二維數組里去。所以不要企圖將不同數據類型的屬性整合到一個二維數組中去。

二維數組的聲明和初始化

二維數組的聲明和一維數組是類似的,不同之處只是多了一個下標:
    數據類型數組名[行數][列數];

要注意,二維數組的下標也都是從0開始的。

二維數組的初始化分為兩種,一種是順序初始化,一種是按行初始化,我們來看一段程序,就能夠對它們有所了解了:(程序7.4.1)
#include "iostream.h"
#include "iomanip.h"
int main()
{
   int array1[3][2]={4,2,5,6};//順序初始化
   int array2[3][2]={{4,2},{5},{6}};//按行初始化
   cout <<"array1" <<endl;
   for (int i=0;i<3;i++)//輸出數組array1
   {
      for (int j=0;j<2;j++)
     {
         cout <<setw(2) <<array1[i][j];
      }
      cout <<endl;
   }
   cout <<"array2" <<endl;
   for (int k=0;k<3;k++)//輸出數組array2
   {
      for (int l=0;l<2;l++)
      {
         cout <<setw(2) <<array2[k][l];
      }
      cout <<endl;
   }
   return 0;
}

運行結果:
array1
4 2
5 6
13 4
array2
4 2
5 8
6 8

我們可以看出,所謂按順序初始化就是先從左向右再由上而下地初始化,即第一行所有元素都初始化好以后再對第二行初始化。而按行初始化則是用一對大括號來表示每一行,跳過前一行沒有初始化的元素,在行內從左向右地進行初始化。對于沒有初始化的元素,則都是一個不確定的值。

省略第一維的大小

我們在第一節學到,一維數組的大小可以省略。可是二維數組的元素個數是行數和列數的乘積,如果我們只告訴電腦元素個數,電腦無法知道究竟這個數組是幾行幾列。所以,C++規定,在聲明和初始化一個二維數組時,只有第一維(行數)可以省略。比如:
C++二維數組講解、二維數組的聲明和初始化    int array[][3]={1,2,3,4,5,6};
相當于:
    int array[2][3]={1,2,3,4,5,6};

二維數組在內存中的存儲情況

先前已經說明,內存是依靠地址來確定內存中的唯一一個存儲單元的,即只有一個參數。所以在內存中,所有的數據都是像一維數組那樣順序存儲的。那么具有兩個下標的二維數組是怎樣存放到內存中的呢?

在內存中,先將二維數組的第一行按順序存儲,接著就是第二行的數據,然后是第三行的數據……右圖(圖7.4)所示的就是一個二維數組在內存中的存儲情況。

向函數傳遞二維數組

我們知道,數組作為參數傳遞給函數的是數組首元素的地址。對于二維數組來說亦是如此。不過有兩個問題,一個是我們必須讓函數知道行數和列數,這就像我們要讓函數知道一維數組的大小一樣,防止發生越界訪問。另一個就是我們必須讓電腦知道這個二維數組是怎樣的一個表格,即必須告知數組的列數。這和只能省略二維數組的行數道理是一樣的。下面我們就來看一個向函數傳遞二維數組的程序:
#include "iostream.h"
#include "iomanip.h"
void disp(int a[][2],int r,int c);//告知數組的列數
int main()
{
   int array[3][2]={4,2,5,6,3,1};
   cout <<"array" <<endl;
   disp(array,3,2);
   return 0;
}
void disp(int a[][2],int r,int c)
{
   for (int i=0;i<r;i++)
   {
      for (int j=0;j<c;j++)
      {
         cout <<setw(2) <<a[i][j];
      }
      cout <<endl;
   }
}

運行結果:
array
4 2
5 6
3 1

二維數組轉化成一維數組

有些時候,我們覺得用二維數組來描述一樣事物很方便。比如我們用二維數組來畫一個迷宮地圖,行下標和列下標就如同直角坐標系一樣??墒窃谀承┣闆r下,不能使用二維數組,或者難以制造一個二維數組。二維數組在內存中的存儲情況和一維數組是相同的,所以我們只好用一個一維數組來代替它了。
C++二維數組講解、二維數組的聲明和初始化

于是,我們不難總結出一個結果,一個二維數組元素a[x][y]在一維數組b中,是:
    a[x][y]=b[x*列數+y]
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕亚洲二区| 日本不卡免费高清视频| 欧美一级在线播放| 亚洲高清av在线| 久久精品国产一区二区三区| 国产91成人在在线播放| 日韩美女视频免费在线观看| 91在线|亚洲| 欧美性猛交xxxx富婆弯腰| 久久精品中文字幕电影| 成人h视频在线观看播放| 日韩精品视频在线免费观看| 亚洲第一二三四五区| 欧美一区二区大胆人体摄影专业网站| 国产mv久久久| 国产美女高潮久久白浆| 欧美贵妇videos办公室| 欧美在线视频在线播放完整版免费观看| 亚洲色图激情小说| 国产精品久久网| 国产精品视频白浆免费视频| 国产日韩av高清| 国产精品揄拍500视频| 日韩国产欧美精品一区二区三区| 一区二区av在线| 国产精品入口免费视频一| 影音先锋欧美精品| 久久免费视频在线| 两个人的视频www国产精品| 日本亚洲欧洲色| 国产不卡一区二区在线播放| 色妞久久福利网| 成人欧美一区二区三区在线| 欧美日韩亚洲一区二| 欧美性videos高清精品| 国产精品草莓在线免费观看| 中文字幕久精品免费视频| 久久久久久久影院| 日韩一区二区三区xxxx| 精品福利樱桃av导航| 欧美成人激情图片网| 精品国模在线视频| 亚洲男人天堂九九视频| 国产偷亚洲偷欧美偷精品| 久久在线免费视频| 亚洲成人久久网| 清纯唯美日韩制服另类| 久久影院资源网| 亚洲第一福利网| 国产美女直播视频一区| 国产精品爽爽ⅴa在线观看| 亚洲欧美日韩国产中文专区| 国产精选久久久久久| 久久九九精品99国产精品| 国产精品视频导航| 亚洲乱码av中文一区二区| 亚洲综合视频1区| 欧美一区视频在线| 尤物九九久久国产精品的分类| 久久亚洲综合国产精品99麻豆精品福利| 欧美有码在线观看视频| 国产欧美 在线欧美| 精品一区二区三区三区| 中文字幕最新精品| 欧美美女15p| 国产精品极品美女粉嫩高清在线| 国产精品免费久久久久影院| 色婷婷综合久久久久中文字幕1| 国产精品一区久久久| 日韩av综合网| 国产成人综合av| 国产日韩在线播放| 亚洲精品国产美女| 亚洲综合色激情五月| 高清欧美性猛交xxxx黑人猛交| 国产成人精品最新| 精品自拍视频在线观看| 91九色单男在线观看| 一区二区三区视频免费| 国产欧美一区二区三区在线看| 国内精品伊人久久| 色婷婷综合久久久久| 色妞在线综合亚洲欧美| 久久91精品国产91久久久| 国产精品久久久久久久9999| 国产有码一区二区| 精品中文字幕在线| 日韩有码视频在线| 日本高清不卡的在线| 国产一区二区三区在线观看视频| 欧美视频在线免费| 国产一区二区三区四区福利| 中文字幕日韩高清| 久久精品一本久久99精品| 日本欧美在线视频| 欧美一区二区三区四区在线| 成人两性免费视频| 亚洲成人av片| 97国产精品视频人人做人人爱| 亚洲国产精品女人久久久| 国产91ⅴ在线精品免费观看| 色综合伊人色综合网站| 亚洲精品欧美一区二区三区| 久久久久999| 亚洲成人激情图| 一区二区在线免费视频| 欧美精品第一页在线播放| 亚洲欧美成人精品| 欧美性猛交xxxx乱大交3| 91精品国产自产在线老师啪| 国产精品久久久久久影视| 国产成人精彩在线视频九色| 亚洲欧美日韩中文在线| 精品国产一区二区三区久久久| 亚洲国产天堂网精品网站| 欧美日本黄视频| 欧美日韩午夜激情| 免费av一区二区| 欧美xxxx做受欧美.88| 日韩在线欧美在线国产在线| 91精品国产高清久久久久久91| 国产精品高潮呻吟久久av黑人| 日韩av综合中文字幕| 成人黄色片在线| 91精品国产综合久久香蕉最新版| 亚洲欧美日韩视频一区| 热久久99这里有精品| 九九热这里只有精品免费看| 中文字幕av一区中文字幕天堂| 91sao在线观看国产| 日韩免费在线观看视频| 国内精品久久久久久中文字幕| 国语对白做受69| 久久久久久久久久久亚洲| 精品久久久久久亚洲国产300| 久久成人这里只有精品| 亚洲欧美另类中文字幕| 91欧美精品成人综合在线观看| 日韩中文字幕精品视频| 国产精欧美一区二区三区| 国产精欧美一区二区三区| 欧美激情图片区| xvideos亚洲人网站| 亚洲成人av资源网| 日韩av不卡在线| 丝袜亚洲欧美日韩综合| 国产精品久久久91| 91久久久精品| 国产精品v片在线观看不卡| 精品国产31久久久久久| 国内免费久久久久久久久久久| 欧美大尺度在线观看| 久久久久久久久久国产精品| 26uuu亚洲国产精品| 亚洲经典中文字幕| 久久国产精品久久久久久| 97超级碰碰碰| 国产精品久久久久久久久久ktv| 午夜精品久久久久久99热软件| 韩国一区二区电影| 日韩av三级在线观看| 色久欧美在线视频观看| 欧美影院久久久| 亚洲国产高清自拍|