• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            C++分析研究  
            C++
            日歷
            <2014年3月>
            2324252627281
            2345678
            9101112131415
            16171819202122
            23242526272829
            303112345
            統(tǒng)計(jì)
            • 隨筆 - 92
            • 文章 - 4
            • 評論 - 4
            • 引用 - 0

            導(dǎo)航

            常用鏈接

            留言簿

            隨筆檔案

            文章檔案

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

             

              對于二維數(shù)組和二維指針的內(nèi)存的分配
              這里首選說一下一維指針和一維數(shù)組的內(nèi)存分配情況。
              一維:
              數(shù)組:形如int a[5];這里定義了一個(gè)一維數(shù)組a,并且數(shù)組的元素個(gè)數(shù)是5,這里的a是這五個(gè)元素的整體表示,也就是通過a我們能找到這五個(gè)元素。注意:a是代表數(shù)組第一個(gè)元素的首地址。&a是代表數(shù)組的地址,雖然它們的值相同。
              指針: int *p = NULL;這里p是一個(gè)指針,它指向的是計(jì)算
              機(jī)內(nèi)一塊存儲int類型的內(nèi)存。P = a;就是讓p等于剛才申請的數(shù)組的第一個(gè)元素的地址。所以通過p我們也能找到那5個(gè)元素所以P[i]跟a[i]的作用一樣。
              注意:
              1:int *p = NULL; p的大小在32位機(jī)器是4,即使p=a;之后p的sizeof(p)仍然等于4.
              2:在聲明之后,數(shù)組必須分配內(nèi)存進(jìn)行初始化。而指針一般是動(dòng)態(tài)分配其指向的內(nèi)存。
              3:不要混淆指針和數(shù)組,指針就是指針,數(shù)組就是數(shù)組,只是數(shù)組在一定條件下可以轉(zhuǎn)換成指針。不要將指針和數(shù)組混淆。(例如:指針有++,--操作,數(shù)組則不可以)。
              一維指針的動(dòng)態(tài)內(nèi)存分配:
              int *p = NULL;
              p = new int[N];
              千萬別忘了delete
              delete [] p;
              p = NULL;
              二維數(shù)組的內(nèi)存分配
              int a[2][3]; 這里分配了一個(gè)2X3=6個(gè)int大小的數(shù)組。二維數(shù)組的第二個(gè)維度3不能省略。
              二維數(shù)組的內(nèi)存在計(jì)算機(jī)內(nèi)也是連續(xù)的一片地址,只不過每3個(gè)元素構(gòu)成一個(gè)一維數(shù)組a[i],這里的a[i]代表維度為3的數(shù)組的第一個(gè)元素的地址。所以a[i][j]的訪問跟a[i]的訪問也就清楚了。這里的a[i]其實(shí)是一個(gè)一維數(shù)組的第一個(gè)元素的地址。
              對于二維數(shù)組做實(shí)參,我們通常用一維指針處理,例如:
              1 #include
              2 void test(int *p)
              3 {
              4 for (int i = 0;i<3;++i)
              5 {
              6 for(int j = 0;j<3;++j)
              7 {
              8 std::cout《*(p+3*i+j); //一維處理
              9 }
              10 }
              11 }
              12 int main(void)
              13 {
              14 int a[3][3]={1,2,3,4,5,6,7,0,0};
              15 test((int*)a); //將二維數(shù)組當(dāng)做一維處理
              16 system("pause");
              17 return 0;
              18 }
              這些想必書上講的都非常清楚。
              二維數(shù)組的C++動(dòng)態(tài)內(nèi)存分配。
              二維指針的動(dòng)態(tài)數(shù)組分配:二維指針類似指針數(shù)組的分配
              int **p;
              1 #include
              2 int main(void)
              3 {
              4 int **p = NULL; //這里申請一個(gè)3x4的二維數(shù)組
              5 p = new int *[3]; //分配一維指針,分配三個(gè)int* 類型的一維指針。
              6 for (int i = 0;i < 3; ++i)
              7 {
              8 p[i] = new int[4];
              9 }
              10 for (int i = 0; i < 3; ++i)
              11 {
              12 for(int j = 0; j < 4 ; ++j)
              13 {
              14 p[i][j] = i*j;
              15 std::cout<
              26 return 0;
              27 }
              指針數(shù)組的動(dòng)態(tài)內(nèi)存分配
              指針數(shù)組的動(dòng)態(tài)內(nèi)存分配只需要對指針數(shù)組的數(shù)組元素指針分別分配內(nèi)存即可,比二維指針的分配少了一個(gè)環(huán)節(jié)。
              1 #include托福答案
              2 int main(void)
              3 {
              4 int *a[3]; //申請含有三個(gè)int* 類型的指針數(shù)組
              5 //跟二維指針不同的是,這里數(shù)組a不用手動(dòng)申請內(nèi)存
              6 for (int i = 0;i < 3;++i) //申請一個(gè)3x4的空間
              7 {
              8 a[i] = new int[4];
              9 }
              10 for (int i = 0; i<3 ;++i)
              11 {
              12 for (int j = 0; j<4; ++j)
              13 {
              14 a[i][j] = i*j;
              15 std::cout<
              25 return 0;
              26 }
              數(shù)組指針的動(dòng)態(tài)內(nèi)存分配
              數(shù)組指針就是指向數(shù)組的指針,說白了就是指向一個(gè)數(shù)組整體,因此分配的時(shí)候直接申請一片內(nèi)存地址即可。跟二維數(shù)組的靜態(tài)分配類似。
              1 // Karllen
              2 int main(void)
              3 {
              4 int (*a)[4]; //這里的4是第二維的維度,a的增量的基數(shù)為4個(gè)int
              5 a = new int[3][4];
              6 delete []a;
              7 a = NULL;
              8 return 0;
              9 }

            posted on 2014-05-28 20:29 HAOSOLA 閱讀(437) 評論(0)  編輯 收藏 引用

            只有注冊用戶登錄后才能發(fā)表評論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


             
            Copyright © HAOSOLA Powered by: 博客園 模板提供:滬江博客
            PK10開獎(jiǎng) PK10開獎(jiǎng)
            久久精品人人做人人爽电影| 色婷婷综合久久久久中文字幕| 国产免费福利体检区久久| 久久激情亚洲精品无码?V| 亚洲AV无码1区2区久久| 国産精品久久久久久久| 99久久精品国产免看国产一区| 伊色综合久久之综合久久| 精品久久人妻av中文字幕| 久久这里只有精品首页| 久久国产成人| 天天爽天天狠久久久综合麻豆| 国产精品美女久久久久AV福利| 亚洲欧美一区二区三区久久| 99久久国产综合精品麻豆| 久久国产福利免费| 国产一级持黄大片99久久| 久久精品免费全国观看国产| 亚洲国产成人久久精品影视| 老司机国内精品久久久久| 久久99精品国产| 伊人久久精品无码av一区| 久久亚洲精品国产精品| 久久ww精品w免费人成| 四虎国产精品免费久久久 | 精品熟女少妇av免费久久| 久久精品无码一区二区app| 久久亚洲国产欧洲精品一| 亚洲国产欧美国产综合久久| 久久久久亚洲AV无码专区桃色| 久久精品人妻一区二区三区| www.久久精品| 久久99国产精品久久久| 国产精品久久一区二区三区| 国产91色综合久久免费| 99久久国产综合精品麻豆| 狠狠色丁香久久综合五月| 99国内精品久久久久久久| 国产激情久久久久影院老熟女| 91久久成人免费| 欧美久久久久久午夜精品|