陣列:存放一組資料
兩種初始化:靜態初始化與動態初始化
靜態初始化:指定個數,但沒有全部初始化,則剩下的自動為0 如:a[4]={};
制定個數,並全部初始化
制定個數,但沒有初始化,則全部為0,但注意是有了「 」,表明是靜態初始化
指定個數,並指定下表初始化,則沒有初始化部分為0
動態初始化:指定個數,挨個賦值
指定個數,初始化一部分,則剩餘的值不確定
越界後的結果難以預料
%p 用於十六進製制輸出,而位址的輸出就是十六進製制輸出,輸出時0x代表後面的數字是十六進製制數字
陣列中的元素的位址是連續的
陣列名的位址=首元素的位址=陣列的位址=陣列名
計算陣列的元素數量:陣列的總位元組數/ 單個元素型別的位元組數= 陣列的長度
如: a[5]={}; sizeof(a)/ sizeof(int) 其中a代表陣列的首位址,所以sizeof會自動算出這個陣列的總長度
但是,若將a作為指標傳送則不行,因為它是將a當成乙個指標傳送過去,所以sizeof(a)算出來的值是作為指標的a的長度
陣列的元素作為函式的引數與普通的變數作為函式的引數是一樣的,因為雖是變數但有乙個確切的值
陣列名是乙個常量,它的值是陣列的首位址,其值不可改變,但裡面的內容可以改變
void a(int a,int length); 其中int a是陣列的形參,length是int型的形參,學完指標後,會已int * a來代替陣列的形參,而且接受的時候,其實也是已指標形式接收
傳遞的如果是個位址,則函式內會修改的是位址內的值,而如果傳遞的是乙個值,則修改的是複製過來的值,而不是位址內的值,所以結果或許會有些與預想的偏差這就是值傳遞與位址傳遞
僅用兩個變數彼此值交換
a=a+b;
b=a-b;
a=a-b;
氣泡排序:因為要分輪,且每輪比較次數不同,所以用雙層for迴圈計算,第乙個for代表比較輪數第二個for代表每一輪比較次數,與每次哪兩個值比較
簡解:輪數為len-1次,如a[6],五輪確認五個數,則剩下乙個數就自然確定了
次數為len-1-i,其中i代表輪數,因為i值通常取0,但第一輪的比較次數就為len-1次,所以為len-1-i
詳解:用len代表陣列長度,則比較輪數為len-1,因為六個數比較五輪,每輪確認乙個數,則五輪確認五個數,在前後兩數比較中,後面的數都比前面大,則最前面的最後乙個數自然就確定了
若輪數i的初始值為0,則比較次數為len-1-i次,因為每過一輪,確認乙個數,所以經過i輪確認i個數,第一輪比較次數為len-1 再第二輪比較次數為len-2,但用來表示輪數的i值通常取初值為0,所以比較的次數為len-1-i,減1是當i為0時,也要比較len-1次,每一輪,比較次數減一,即為len-1-i,i為遞增數
ps:從a[0]與a[1]比較到a[len-1]與a[len],因為下表要從開始用j來表示,即為a[j]與a[j+1],所以比較到len-1次時,為a[len-1]與a[len],
輪跟長度有關,次數跟輪有關,下標跟次數有關
二維陣列a[m][n],m個一維陣列,每個陣列有n個元素,總共有m*n個元素。
二維陣列的靜態賦值:
連續賦值遵循一維陣列的靜態賦值 int a[2][2]=;剩餘部分為0
分段賦值,a[2][4] = ,};缺少部分補0
動態賦值:依舊是乙個乙個賦值
在靜態初始化中,行可以不寫,列必須寫,因為列可以算出
在動態初始化中,啥都不能省略
雙重for迴圈輸出二維陣列的值
在xcode中,可以用變數來指定陣列的長度,其它平台不行
一維陣列day 6
語法格式 資料型別 陣列名 new 資料型別 陣列長度 或 資料型別 陣列名 從第乙個數起,陣列的下標是從0開始。1 迴圈賦值 2 隨機數組 1 使用for迴圈進行便歷 for int i 0 i 2 使用增強forfor int num a 3 呼叫 陣列tostring方法sout arrays...
二維陣列實現氣泡排序
實現了一維陣列的排序,同時二位陣列也可實現排序。利用c 實現,以下為主函式 includeusing namespace std define n 3 void paixu int p n void out int p n int main 形參為指向一維陣列的指標,將二維陣列存到一維陣列之中,將一...
VBA 二維陣列氣泡排序例項
學習vba的同學經常會用到陣列的排序,網上介紹的程式演算法一般都是舉例一維陣列,增加了公升降序選擇,排序列號選擇,以及標題行數等實際需要使用的引數 private sub test dim arr sheets sheet1 select row sheets sheet1 usedrange.ro...