C語言中的多維陣列

來源:互聯網
上載者:User
2006-12-27 17:53
439人閱讀 評論(1)
收藏 舉報

這個系列的文章主要是講一些C語言的文法中比較模糊的問題,和一些常用的語言技巧.

首先聲明的是:對於C語言文法和語言技巧的講解,我將以源碼的形式給出,這些 都是C語言中比較基礎,實用而且是重要的,當然對於C語言的老手,這些都是班門弄斧.但是我還是覺得,不管是新手還是老手,這些都是你提高語言能力有協助的.

另外要說的是:文章開始的大部分是從一些精典的C語言書籍中提取的,但是不缺筆者的一些感想.我相信隨著學習的深入會有更多精彩的東西.

推薦書籍:<<The C Programming Language>>,<<Pointers on C>>,<<Expert C Programming>>,<<C Traps and Pitfalls>>

文章以代碼對照注釋形式給出,還有運行結果對照.

/*=====================================
本程式是為了學習而使用的的測試程式,用來
說明C語言中的一些學習誤區,對C語言的某些
知識作詳細的講解
=======================================*/
#include <stdio.h>
#include <stdlib.h>

void main()
{
  /*================================================
  主題:C語言中的多維陣列
  內容:C語言中定義和引用多維陣列的維一方法就是使用數組
  的數組(就是說數組的數組和多維陣列在這裡是同一個概念,
  在pascal語言中不是這樣),C語言中實際把數組當成一種向量
  (vector),就是某種對象的一維數組(數組元素可以是一維數組
  和其它).
  ==================================================*/
  /*1.分解多維陣列,多維陣列中數組元素的定位*/
 int data[2][3][4] ={{{1,2,3,4},{5,6,7,8},{9,10,11,12}},{{13,14,15,16},
 {17,18,19,20},{21,22,23,24}}};
    printf("第1個測試值為:%d/n",data[1][2][3]); //測試中數組越界並沒有報錯

 //p是指向一個二維數組的指標,這個地方要保證p後面的維數與data的後二維相同
 int (*p)[3][4] = data;
 printf("第2個測試值為:%d/n",p[1][2][3]);

    //r是一個指向一維數組的指標,可以指向data中的第一個或第二個一維數組(把data的元素看成一個一維數組)
 int (*r)[4] = data[1];
 printf("第3個測試值為:%d/n",r[1][2]);

    //t是一個int型的指標,讓它指向data中的第三維的首元素(這個第三維是任意的)
 int *t = data[0][0];
 printf("第4個測試值為:%d/n",t[3]);
  
    //上面的指標指向的數組維數不同增量差別會很大
    printf("第5個測試值為:%x/n",r);
    r++;
 printf("第6個測試值為:%x/n",r);
 printf("第7個測試值為:%x/n",t);
 t++;
 printf("第8個測試值為:%x/n",t);

  /*2.多維陣列的初使化*/
   //上面已經提到一個多維陣列初使化的例子,下面又是一個
 int data1[][3] = {{1,2,3},{4,5}};  //維數大於初使值的個數則初使化為0
 printf("第1個測試值為:%d/n",data1[1][2]);

  /*3.初使化二維字串數組*/
 char fruit[][9] = {"apple",   //方法一
        "orange",
        "ege",
        "banana"};
 printf("第1個測試值為:%s/n",fruit[1]);

 char *anima[] = {"tiger",   //方法二
      "lion",
      "chick",
      "elephont"};
  
   printf("第1個測試值為:%s/n",anima[1]);
}

以下是運行結果:

第1個測試值為:24    

第2個測試值為:24

第3個測試值為:19

第4個測試值為:4

第5個測試值為: 12ff50 

 第6個測試值為: 12ff60         

第7個測試值為: 12ff20

第8個測試值為: 12ff24

第1個測試值為:0

第1個測試值為: orange

第1個測試值為: lion        

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.