c語言的陣列就是一些列具有相同型別(一些弱型別檢查的語言比如python無需型別相同)的資料的集合,這些資料在記憶體中依次挨著存放,彼此之間沒有縫隙。要將資料儲存至陣列,必須為之分配對應的儲存空間。
陣列的定義:
比如儲存整型資料的陣列如下:
int temp[8]=; //此種宣告方式申請的是棧空間,在函式體結束時由系統自動**。
而int* temp=new int[8]; //此種方式申請的是堆空間,由程式設計師自己釋放管理temp這一塊記憶體
上面兩行**從功能上可以說是等價的,都是為我們分配了一塊8*4位元組的記憶體,並取名叫temp。我們把這樣的一組資料的集合稱為陣列,而陣列中的每乙個資料被稱為陣列元素,比如temp[2],所包含的資料元素的個數稱之為陣列長度,例如temp其陣列長度為8。陣列中的每乙個元素的都有唯一的編號,從下標0開始(重點:不是我們熟知的1,一定要記住),訪問陣列元素通過編號訪問即可,比如訪問temp的第2個元素如下:
temp[1]
接下來我們儲存一些資料(10,20,40,80,100,120,160,200)至temp,賦值語句如下:
temp[0]=10;
temp[1]=20;
temp[2]=40;
temp[3]=80;
temp[4]=100;
temp[5]=120;
temp[6]=160;
temp[7]=200;
這裡的0、1、2、3、4、5、6、7就是陣列下標,temp[0]、temp[1]、temp[3]...... 就是陣列元素。
在工作過程中,我們通常會遇到為指定一維陣列迴圈賦值的情況,下面以temp為例採用for迴圈賦值:
#include int main();//初始化,防止出現髒資料
int index=0;
for(index=0;index<8;index++)
//迴圈列印陣列元素值
for(index=0;index < 8;index++)
return 0;
}輸出結果為:0 2 4 6 8 10 12 14 16。
說明:變數index既為陣列下標,也為for迴圈結束條件。因為陣列的長度為8,因此我們for迴圈的條件不能超過
8。
有時候我們也需要與使用者互動(讓使用者輸入資料至陣列),讓使用者輸入8個資料至temp的**如下:
#include int main();//初始化,防止出現髒資料
int index=0;
printf("input datan");
for(index=0;index<8;index++)
//迴圈列印陣列元素值
for(index=0;index < 8;index++)
return 0;
}執行結果:
1 4 5 8 9 8 8 9(輸入)
1 4 5 8 9 8 8 9(輸出)
位址。
綜上所述,一維陣列通用的定義方式為:
datetype arrayname[size];
datetype表示資料型別,可以為char double int float 自定義資料結構等
arrayname為陣列名,size為陣列長度。
訪問陣列元素時,下標的取值範圍為 0 ≤ index < size,過大或過小都會越界,導致陣列溢位(一定要注意)。
C 深入淺出Dynamic
我們知道c 是乙個強型別語言,也就是說編譯器在編譯的時候會堅持資料型別是否正確。但是dynamic的出現讓c 具有了弱語言型別的特性。編譯器在編譯的時候不再對型別進行檢查,編譯器預設dynamic物件支援你想要的任何特性。dynamic dy 100 dy.name 89 dy.getname 上例...
深入淺出viewport 一
viewport對於移動瀏覽器上的網頁展示比較重要,那麼我們為什麼需要設定viewport呢?viewport到底是個什麼東東?讓我們一起來抽絲剝繭,一點點的揭露它的真相。這裡是翻譯的文章,沒有逐字翻譯。viewport的作用是限制頁面頂級的包含元素,這聽起來可能有點模糊不清。舉個例子,假設你有乙個...
深入淺出AOP(一)
aop事實上非常早之前依照做出來了一些東西,之所以不敢說做出來了。是由於它是什麼?怎麼實現?做出來的東西是不是?先前一直查資料。查到的資料跟著做。到後來發現,aop越來越大,而非常多資料跟aop本身的思想有衝突的地方,所以還有非常多要學習的地方。能夠動態的加入和刪除在切面上的漏記而不影響原來的執行 ...