柚子快報(bào)激活碼778899分享:算法 【C語(yǔ)言初階(五)】數(shù)組
柚子快報(bào)激活碼778899分享:算法 【C語(yǔ)言初階(五)】數(shù)組
?博主主頁(yè): 33的博客? ?文章專(zhuān)欄分類(lèi): C語(yǔ)言從入門(mén)到精通? ?我的代碼倉(cāng)庫(kù): 33的代碼倉(cāng)庫(kù)?
目錄
1. 前言2.一維數(shù)組的概念3.一維數(shù)組的創(chuàng)建和初始化3.1數(shù)組的創(chuàng)建3.2數(shù)組的初始化3.3數(shù)組的類(lèi)型
4.一維數(shù)組的使用4.1數(shù)組下標(biāo)4.2數(shù)組元素打印4.4數(shù)組元素輸入
5. 一維數(shù)組在內(nèi)存中的存儲(chǔ)6.sizeof求數(shù)組個(gè)數(shù)7.二維數(shù)組7.1 二維數(shù)組的創(chuàng)建7.2二維數(shù)組初始化
8.二維數(shù)組的使用8.1二維數(shù)組的下標(biāo)8.2 二維數(shù)組的打印8.3 二維數(shù)組的輸入8.4二維數(shù)組在內(nèi)存中的存儲(chǔ)
9. 總結(jié)
1. 前言
前面我們已經(jīng)學(xué)習(xí)了分支和循環(huán),這篇文章我們一起來(lái)學(xué)習(xí)新的知識(shí)—數(shù)組,數(shù)組是一個(gè)十分常見(jiàn)的知識(shí),接下來(lái)就一起進(jìn)入數(shù)組的學(xué)習(xí)吧! 本章重點(diǎn)
本篇文章主要介紹數(shù)組的概念,一維數(shù)組的創(chuàng)建的初始化,一維數(shù)組的使用,一維數(shù)組在內(nèi)存中的存儲(chǔ),二維數(shù)組的創(chuàng)建和初始化,二維數(shù)組的使用等等。
2.一維數(shù)組的概念
數(shù)組是一組相同類(lèi)型元素的集合:
數(shù)組中存放的是一個(gè)或者多個(gè)數(shù)據(jù),但數(shù)組元素不能為0, 數(shù)組中存放的多個(gè)數(shù)據(jù),類(lèi)型是相同的
3.一維數(shù)組的創(chuàng)建和初始化
3.1數(shù)組的創(chuàng)建
格式如下:
type arr_name[常量值];
type是指數(shù)組的類(lèi)型,可以是:char、short、int等等。 arr_name是數(shù)組名,自定義。 [常量值] 常量值是用來(lái)定義數(shù)組的大小,自定義。
例如
int a[3];//定義了一個(gè)數(shù)組a長(zhǎng)度為3
3.2數(shù)組的初始化
數(shù)組在創(chuàng)建的時(shí)候,我們需要得定義一些初始值,這種就稱(chēng)為數(shù)組的初始化。 那么數(shù)組該如何初始化呢?數(shù)組的初始化一般用大括號(hào),將數(shù)據(jù)放在大括號(hào)內(nèi)。數(shù)組的初始化又可以分為完全初始化和不完全初始化。 例如:
//完全初始化
int a[3]={1,2,3}
//不完全初始化
int a[5]={1}//第一個(gè)元素為初始化為1,其余默認(rèn)初始化為0
3.3數(shù)組的類(lèi)型
數(shù)組也是有類(lèi)型的,數(shù)組算是一種自定義類(lèi)型,去掉數(shù)組名留下的就是數(shù)組類(lèi)型
int a[3]={1}
char b[4]={'1'}
數(shù)組a的類(lèi)型是int [3] 數(shù)組b的類(lèi)型是char [4]
4.一維數(shù)組的使用
4.1數(shù)組下標(biāo)
c語(yǔ)言中,數(shù)組下標(biāo)是從0開(kāi)始,假設(shè)數(shù)組的長(zhǎng)度是n,那么數(shù)組的下標(biāo)最大就是n-1.第1個(gè)數(shù)組元素可以寫(xiě)為a[0],第2個(gè)數(shù)組元素可以寫(xiě)為a[1],第3個(gè)數(shù)組元素可以寫(xiě)為a[2]…那么第n個(gè)數(shù)組元素就可以寫(xiě)為a[n-1]。
4.2數(shù)組元素打印
如果要訪(fǎng)問(wèn)整個(gè)數(shù)組,該如何打印呢?接下來(lái)我們通過(guò)一段程序來(lái)實(shí)現(xiàn)
int main()
{
int arr[3]={1,2,3};
int i=0;
for(i=0;i<3;i++)
{
printf("%d",arr[i]);
}
}
4.4數(shù)組元素輸入
如果要從鍵盤(pán)中輸入一個(gè)元素,存入數(shù)組中,那么又該如何實(shí)現(xiàn)呢?
int main()
{
int arr[3]={0};//默認(rèn)初始化為0
int i=0;
for(i=0;i<3;i++)
{
scanf("%d",&arr[i]);//從鍵盤(pán)中輸入一個(gè)元素,存入數(shù)組arr中
}
}
5. 一維數(shù)組在內(nèi)存中的存儲(chǔ)
我們?nèi)绻胍罃?shù)組在內(nèi)存中是如何存取的,我們可以通過(guò)打印數(shù)組中每個(gè)元素的地址來(lái)看看規(guī)律。
int main()
{
int arr[6] = { 1,2,3,4,5,6};
int i = 0;
for (i = 0; i < 6; i++)
{
printf("arr[%d]的地址=%p\n",i, &arr[i]);
}
}
運(yùn)行結(jié)果: 我們會(huì)發(fā)現(xiàn)a[0]到a[5]的地址依次增大,并且相鄰兩個(gè)數(shù)組元素相差4個(gè)字節(jié),為什么是4個(gè)字節(jié)呢那是因?yàn)槲覀兌x的元素類(lèi)型為int類(lèi)型,int類(lèi)型的大小就是4個(gè)字節(jié)。我們就可以得出結(jié)論:數(shù)組在內(nèi)存中是連續(xù)存放的,且隨著下標(biāo)的增大,數(shù)組地址也增大。
6.sizeof求數(shù)組個(gè)數(shù)
在遍歷數(shù)組的時(shí)候,我們經(jīng)常想知道數(shù)組的個(gè)數(shù),就可以sizeof操作符來(lái)求。 例如:
int main()
{
int arr[8] = {0};
printf("%d", sizeof(arr));
}
結(jié)果: 個(gè)數(shù)應(yīng)該是8個(gè)為什么返回32呢?其實(shí)是因?yàn)?**sizeof計(jì)算的是數(shù)組所棧內(nèi)存空間的總大小,單位為字節(jié)。***如果要計(jì)算數(shù)組的個(gè)數(shù),只需要用 總內(nèi)存空間/一個(gè)元素的內(nèi)存
int main()
{
int arr[8] = {0};
printf("%d", sizeof(arr)/sizeof(arr[0]));
}
結(jié)果: 輸出結(jié)果為8個(gè)
7.二維數(shù)組
概率:把一維數(shù)組作為數(shù)組的元素,那么就是二維數(shù)組。
7.1 二維數(shù)組的創(chuàng)建
定義二維數(shù)組格式如下:
type arr_name[常量值1][常量值2];
//例如
int a[3][5];//定義三行5列的數(shù)組
7.2二維數(shù)組初始化
例如
int arr1[2][3]={1,2,3,4,5,6};//完全初始化
int arr2[2][3]={1,2,3};//不完全初始化,其他值默認(rèn)為0
int arr3[2][3]={{1,2,3},{4,5,6}};//按照行初始化
int arr4[][3]={1,2,3,4};//初始化的時(shí)候行可以省略,但是列一定不能省??!
8.二維數(shù)組的使用
8.1二維數(shù)組的下標(biāo)
一維數(shù)組的訪(fǎng)問(wèn)需要下標(biāo),其實(shí)二維數(shù)組的訪(fǎng)問(wèn)也需要下標(biāo),二維數(shù)組是有行有列的,只要確定了行列就可以訪(fǎng)問(wèn)了。
int arr[2][3]={1,2,3,4,5,6};
如下圖: 我們可以用arr[1][2]來(lái)表示6,我們可以用arr[][1]來(lái)表示2
8.2 二維數(shù)組的打印
int main()
{
int arr[2][3]={1,2,3,4,5};
int i = 0;
int j = 0;
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
printf("%d ",arr[i][j]);
}
printf("\n");
}
return 0;
}
8.3 二維數(shù)組的輸入
前面我們已經(jīng)學(xué)習(xí)了一維數(shù)組的輸入,那么二維數(shù)組該怎么輸入呢?其實(shí)和一維數(shù)組很類(lèi)似。 如下:
int main()
{
int arr[2][3]={0};
int i = 0;
int j = 0;
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
scanf("%d ",&arr[i][j]);
}
return 0;
}
}
8.4二維數(shù)組在內(nèi)存中的存儲(chǔ)
在上述內(nèi)容中我們已經(jīng)得出結(jié)論:一維數(shù)組在內(nèi)存中是連續(xù)存放的,且隨著下標(biāo)的增大,數(shù)組地址也增大,那二維數(shù)組是否也存在這樣的規(guī)律呢? 我們來(lái)進(jìn)行驗(yàn)證:
int main()
{
int arr[2][3] = { 1,2,3,4,5 };
int i = 0;
int j = 0;
for (i = 0; i < 2; i++)
{
for (j = 0; j < 3; j++)
{
printf("arr[%d][%d] = %p\n", i,j,&arr[i][j]);
}
}
return 0;
}
結(jié)果如下:
我們發(fā)現(xiàn)和一維數(shù)組一樣,二維數(shù)組在內(nèi)存中是連續(xù)存放的,且隨著下標(biāo)的增大,數(shù)組地址也增大。
9. 總結(jié)
本篇文章主要介紹數(shù)組的概念,一維數(shù)組的創(chuàng)建的初始化,一維數(shù)組的使用,一維數(shù)組在內(nèi)存中的存儲(chǔ),二維數(shù)組的創(chuàng)建和初始化,二維數(shù)組的使用,有想法的同學(xué)可以通過(guò)本篇文章的知識(shí)來(lái)完成二分查找,兩邊向中間輸入等關(guān)于c語(yǔ)言的學(xué)習(xí)博主就先告一段了,接下來(lái)將進(jìn)行java的學(xué)習(xí),如果同學(xué)們想繼續(xù)深入學(xué)習(xí),可以去看看其他博主的文章。
柚子快報(bào)激活碼778899分享:算法 【C語(yǔ)言初階(五)】數(shù)組
參考閱讀
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀(guān)點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。