不建網(wǎng)站如何做淘寶客社交網(wǎng)絡(luò)推廣方法
?博主主頁: 33的博客?
?文章專欄分類: C語言從入門到精通?
🚚我的代碼倉庫: 33的代碼倉庫🚚
目錄
- 1. 前言
- 2.一維數(shù)組的概念
- 3.一維數(shù)組的創(chuàng)建和初始化
- 3.1數(shù)組的創(chuàng)建
- 3.2數(shù)組的初始化
- 3.3數(shù)組的類型
- 4.一維數(shù)組的使用
- 4.1數(shù)組下標
- 4.2數(shù)組元素打印
- 4.4數(shù)組元素輸入
- 5. 一維數(shù)組在內(nèi)存中的存儲
- 6.sizeof求數(shù)組個數(shù)
- 7.二維數(shù)組
- 7.1 二維數(shù)組的創(chuàng)建
- 7.2二維數(shù)組初始化
- 8.二維數(shù)組的使用
- 8.1二維數(shù)組的下標
- 8.2 二維數(shù)組的打印
- 8.3 二維數(shù)組的輸入
- 8.4二維數(shù)組在內(nèi)存中的存儲
- 9. 總結(jié)
1. 前言
前面我們已經(jīng)學習了分支和循環(huán),這篇文章我們一起來學習新的知識—數(shù)組,數(shù)組是一個十分常見的知識,接下來就一起進入數(shù)組的學習吧!
本章重點
本篇文章主要介紹數(shù)組的概念,一維數(shù)組的創(chuàng)建的初始化,一維數(shù)組的使用,一維數(shù)組在內(nèi)存中的存儲,二維數(shù)組的創(chuàng)建和初始化,二維數(shù)組的使用等等。
2.一維數(shù)組的概念
數(shù)組是一組相同類型元素的集合:
數(shù)組中存放的是一個或者多個數(shù)據(jù),但數(shù)組元素不能為0,
數(shù)組中存放的多個數(shù)據(jù),類型是相同的
3.一維數(shù)組的創(chuàng)建和初始化
3.1數(shù)組的創(chuàng)建
格式如下:
type arr_name[常量值];
type是指數(shù)組的類型,可以是:char、short、int等等。
arr_name是數(shù)組名,自定義。
[常量值] 常量值是用來定義數(shù)組的大小,自定義。
例如
int a[3];//定義了一個數(shù)組a長度為3
3.2數(shù)組的初始化
數(shù)組在創(chuàng)建的時候,我們需要得定義一些初始值,這種就稱為數(shù)組的初始化。
那么數(shù)組該如何初始化呢?數(shù)組的初始化一般用大括號,將數(shù)據(jù)放在大括號內(nèi)。數(shù)組的初始化又可以分為完全初始化和不完全初始化。
例如:
//完全初始化
int a[3]={1,2,3}
//不完全初始化
int a[5]={1}//第一個元素為初始化為1,其余默認初始化為0
3.3數(shù)組的類型
數(shù)組也是有類型的,數(shù)組算是一種自定義類型,去掉數(shù)組名留下的就是數(shù)組類型
int a[3]={1}
char b[4]={'1'}
數(shù)組a的類型是int [3]
數(shù)組b的類型是char [4]
4.一維數(shù)組的使用
4.1數(shù)組下標
c語言中,數(shù)組下標是從0開始,假設(shè)數(shù)組的長度是n,那么數(shù)組的下標最大就是n-1.第1個數(shù)組元素可以寫為a[0],第2個數(shù)組元素可以寫為a[1],第3個數(shù)組元素可以寫為a[2]…那么第n個數(shù)組元素就可以寫為a[n-1]。
4.2數(shù)組元素打印
如果要訪問整個數(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ù)組元素輸入
如果要從鍵盤中輸入一個元素,存入數(shù)組中,那么又該如何實現(xiàn)呢?
int main()
{
int arr[3]={0};//默認初始化為0
int i=0;
for(i=0;i<3;i++){scanf("%d",&arr[i]);//從鍵盤中輸入一個元素,存入數(shù)組arr中}
}
5. 一維數(shù)組在內(nèi)存中的存儲
我們?nèi)绻胍罃?shù)組在內(nèi)存中是如何存取的,我們可以通過打印數(shù)組中每個元素的地址來看看規(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]);}
}
運行結(jié)果:
我們會發(fā)現(xiàn)a[0]到a[5]的地址依次增大,并且相鄰兩個數(shù)組元素相差4個字節(jié),為什么是4個字節(jié)呢那是因為我們定義的元素類型為int類型,int類型的大小就是4個字節(jié)。我們就可以得出結(jié)論:數(shù)組在內(nèi)存中是連續(xù)存放的,且隨著下標的增大,數(shù)組地址也增大。
6.sizeof求數(shù)組個數(shù)
在遍歷數(shù)組的時候,我們經(jīng)常想知道數(shù)組的個數(shù),就可以sizeof操作符來求。
例如:
int main()
{int arr[8] = {0};printf("%d", sizeof(arr));
}
結(jié)果:
個數(shù)應(yīng)該是8個為什么返回32呢?其實是因為***sizeof計算的是數(shù)組所棧內(nèi)存空間的總大小,單位為字節(jié)。***如果要計算數(shù)組的個數(shù),只需要用 總內(nèi)存空間/一個元素的內(nèi)存
int main()
{int arr[8] = {0};printf("%d", sizeof(arr)/sizeof(arr[0]));
}
結(jié)果:
輸出結(jié)果為8個
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};//不完全初始化,其他值默認為0
int arr3[2][3]={{1,2,3},{4,5,6}};//按照行初始化
int arr4[][3]={1,2,3,4};//初始化的時候行可以省略,但是列一定不能省!!
8.二維數(shù)組的使用
8.1二維數(shù)組的下標
一維數(shù)組的訪問需要下標,其實二維數(shù)組的訪問也需要下標,二維數(shù)組是有行有列的,只要確定了行列就可以訪問了。
int arr[2][3]={1,2,3,4,5,6};
如下圖:
我們可以用arr[1][2]來表示6,我們可以用arr[][1]來表示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)學習了一維數(shù)組的輸入,那么二維數(shù)組該怎么輸入呢?其實和一維數(shù)組很類似。
如下:
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)存中的存儲
在上述內(nèi)容中我們已經(jīng)得出結(jié)論:一維數(shù)組在內(nèi)存中是連續(xù)存放的,且隨著下標的增大,數(shù)組地址也增大,那二維數(shù)組是否也存在這樣的規(guī)律呢?
我們來進行驗證:
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ù)存放的,且隨著下標的增大,數(shù)組地址也增大。
9. 總結(jié)
本篇文章主要介紹數(shù)組的概念,一維數(shù)組的創(chuàng)建的初始化,一維數(shù)組的使用,一維數(shù)組在內(nèi)存中的存儲,二維數(shù)組的創(chuàng)建和初始化,二維數(shù)組的使用,有想法的同學可以通過本篇文章的知識來完成二分查找,兩邊向中間輸入等關(guān)于c語言的學習博主就先告一段了,接下來將進行java的學習,如果同學們想繼續(xù)深入學習,可以去看看其他博主的文章。