1、一維數組數組
一、什麼是數組數據結構
二、數組語法函數
三、下標指針
四、初始化索引
五、數組名和數組首地址內存
2、一維數組的應用it
一、數組的賦值與拷貝 io
二、數組的正反遍歷class
三、隨機數容器
四、數組亂序
五、數組的重複
3、二維數組
一、數組的數組
二、二維數組的初始化
三、二維數組的數組名
4、二維數組的應用
一、二維數組與二維表
二、下標計算
1、一維數組
一、什麼是數組
• 數組是用來存儲多條相同數據類型的數據結構。(容器)
分析關鍵點:
-多條
-類型相同-數組是數據的容器,而非數據自己
-數組中的每個數據,叫元素,數組由多個元素(數據)組成。-數據下標(索引)來區分數據中的元素
-元素從數組的位置0開始-元素可使用數組變量名[下標]來獲得具體的元素-數組中元素的個數叫數組的長度
-數組所佔空間=元素的類型*數組的長度
-數組是一段連續的內存區域 指針
-數組變量指向的區域,是數組在內存中的首地址
二、數組語法
• 定義數組: 元素類型 數組名[元素個數];
int array[3];
• 訪問元素: 數組名[下標]
array[0] = 10;
三、下標
• 下標是指訪問數組元素時,中括號中的數字
• 下標不能越界,若是越界,可能會致使如下後果:
–程序直接崩潰
–莫明的改變了其餘變量或數據空間的值
–什麼事兒都沒有
四、初始化
• 賦使用的值
int array2[3]={3,4,5};//依次給數組元素賦值
int array4[3]={1,2};//若是賦值的個數少於數組 的長度,會 自動用0來填充後面的值
• 賦零值
int array[3];//未初始化 可能存在垃圾時
int array3[3]={0};//數組中每一個元素是0
五、數組名和數組首地址
• 數組名是一個地址,並且是不可變的地址
• 數組名不能夠作爲左值,就是不能出如今賦值語句的左邊。初始化除外。
• 數組名是常量(指針)。 因此不能賦值
2、一維數組的應用
一、數組的賦值與拷貝
• 數組的賦值
int array[10];
array[2] = 10;//將數組的第三個元素賦值爲10
• 數組的拷貝
int array[10] = {1,2,3,4,5,6,7,8,9,0};
int num [10];
for (int i = 0; i < 10; i++)num[i] = array[i];
二、數組的正反遍歷
• 數組的正向遍歷
int array[10] = {1,2,3,4,5,6,7,8,9,0};
for (int i = 0; i < 10; i++)
printf(「%d 」,array[i]);
• 數組的反向遍歷
for (int i = 9; i >= 0; i--)
printf(「%d 」,array[i]);
三、隨機數
• rand()函數用於生成一個隨機數
• srand()函數用於定義隨機種子
int main() {
srand((unsigned)time(0));
for (int i=0; i<10; i++) {
int x = rand() % 100;
}
printf("%d ", x);
printf("\n");
return 0;
}
四、數組亂序
• 數組亂序是指將數組中的元素隨機排列
int main() {
int array[10] = {1,2,3,4,5,6,7,8,9,0};
srand((unsigned)time(0));
for (int i=0; i<10; i++) {int x = rand() % (10 - i) + i;
int temp = array[i];
array[i] = array[x];}
array[x] = temp;
for (int i=0; i<10; i++)
printf("%d ", array[i]);
return 0;
}
五、數組的重複
• 數組元素的重複是指將數組中存在相同的數組元素
3、二維數組
一、數組的數組
• 定義數組: 元素類型 數組名[元素個數] [元素個數];
int array[3][4];
• 訪問元素: 數組名[下標] [下標]
array[1][2] = 10;
二、二維數組的初始化
• 對應元素內容
int array2[3][2]={{1,2},{3,4},{5,6}};
• 總體賦值
int array2[3][2]={1,2,3,4,5,6};
• 依次賦值 自動補零
int array2[3][2]={1,2,3,4};
三、二維數組的數組名
• 二維數組名一樣是一個地址,並且是不可變的地址
• 二維數組名一樣不能夠作爲左值,就是不能出如今賦值語 句的左邊。初始化除外。
• 二維數組名是常量(指針)。 因此不能賦值
4、二維數組的應用
一、二維數組與二維表
• 二維數組實際上是數組的數組
• 能夠將二維數組理解爲一張幾行幾列的二維表。
二、下標計算
• 二維數組在內存中的存放方法是先存放列再存放行
eg:int array[3][4];
在內存的存放順序是:
array[0][0]
array[0][1]
array[0][2]
array[0][3]
array[1][0]
array[1][1]
array[1][2]
array[1][3]
array[2][0]
array[2][1]
array[2][2]
array[2][3]