第4講 數(shù)組
程序 = 算法?+ 數(shù)據(jù)結(jié)構(gòu),數(shù)組是存儲數(shù)據(jù)的強而有力的手段。
1. 一維數(shù)組
1.1 數(shù)組的定義
數(shù)組的定義方式和變量類似。
1.2 數(shù)組的初始化
在main函數(shù)內(nèi)部,未初始化的數(shù)組中的元素是隨機的。
局部變量會定義在棧里邊,全局變量會定義在堆里邊 零頁 申請完用的時候再開。
堆區(qū)在底層,棧區(qū)虛擬在上層,中層為靜態(tài)存儲區(qū),總大小為內(nèi)存大小。
1.3 訪問數(shù)組元素
通過下標訪問數(shù)組。
練習題1: 使用數(shù)組實現(xiàn)求斐波那契數(shù)列的第 N 項。
練習題2:輸入一個 n,再輸入 n 個整數(shù)。將這 n 個整數(shù)逆序輸出。
?
練習題3:輸入一個 n ,再輸入 n 個整數(shù)。將這個數(shù)組順時針旋轉(zhuǎn) k(k≤n) 次,最后將結(jié)果輸出。旋轉(zhuǎn)一次是指:將最左邊的數(shù)放到最右邊。
練習題4:輸入 nn 個數(shù),將這 nn 個數(shù)按從小到大的順序輸出。
練習題5:計算 22 的 NN 次方。N≤10000
2. 多維數(shù)組
多維數(shù)組就是數(shù)組的數(shù)組。
int a[3][4]; // 大小為3的數(shù)組,每個元素是含有4個整數(shù)的數(shù)組。
int arr[10][20][30] = {0}; // 將所有元素初始化為0
// 大小為10的數(shù)組,它的每個元素是含有20個數(shù)組的數(shù)組
// 這些數(shù)組的元素是含有30個整數(shù)的數(shù)組
練習題:輸入一個 nn 行 mm 列的矩陣,從左上角開始將其按回字形的順序順時針打印出來。
蛇形矩陣
memset 更快初始化,清空數(shù)組? <cstring>
按字節(jié)處理? sizeof 可以看成函數(shù) 也可以看成操作符 不帶括號
memset(a, 0, sizeof(a))? 0? -1
memcpy 復制數(shù)組的值
memcpy(b, a, sizeof a);? ?a[10]?= {1}? b[10]? 把a賦值給b