- 為什麼需要數組?
為了解決大量同類型資料的存儲和使用問題
為了模拟現實世界
- 數組的分類
一維數組:
怎樣定義一維數組
格式: 資料類型 數組名[元素個數] ;
為n個變量連續配置設定存儲空間
所有的變量資料類型必須相同
所有變量所占的位元組大小必須相等
//例子
int a[5] ;
一維數組名不代表數組中的所有元素
一維數組名代表數組第一個元素的位址
有關一維數組的操作
初始化
1. 完全初始化
int a[5] = {1,2,3,4,5} ;
2. 不完全初始化 //未被初始化的元素自動為零
int a[5] = {1,2,3} ;
3.不初始化 //所有元素都是垃圾值
int a[5] ;
4.清零
int a[5] = {0} ;
指派
排序
求最大/最小值
倒置
查找
插入
删除
二維數組
格式:資料類型 數組名[行數][列數] ;
int a[3][4] ;
//總共是12個元素可以當做是3行4列看待,依次為:
a[0][0] a[0][1] a[0][2] a[0][3]
a[1][0] a[1][1] a[1][2] a[1][3]
a[2][0] a[2][1] a[2][2] a[2][3]
int a[m][n] ;//該二維數組右下角位置坐标元素隻能是a[m-1][n-1]
//初始化:
int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12} ;
int a[3][4] =
{
{1,2,3,4} ,
{5,6,7,8} ,
{9,10,11,12} ,
} ;
//操作:
//輸出二維數組的内容
int a[3][4]
{
{1,2,3,4} ,
{5,6,7,8} ,
{9,10,11,12} ,
} ;
int i,j ;
//輸出數組内容
for (i=0; i<3; ++i)
{
for (j=0; j<4; ++j)
printf("%d",a[i][j]) ;
printf("\n") ;
}
對二維數組進行排序
求每一行的最大值
判斷矩陣是否對稱
矩陣的相乘
多元數組
是否存在多元數組
答:不存在,因為記憶體是線性一維的
n維數組可以當做每個元素是n-1維數組的一維數組。
例如:
int a[3][4] ;
//該數組是含有3個元素的一維數組
隻不過每個元素都可以再分成4個小元素
int a[3][4][5] ;
//該數組是含有3個元素的一維數組
隻不過每個元素都是4行5列的二位數組
Talk is cheap. Show me the code