柚子快報(bào)邀請(qǐng)碼778899分享:【C語(yǔ)言】--數(shù)組
?個(gè)人主頁(yè): 起名字真南 ?個(gè)人專(zhuān)欄:【數(shù)據(jù)結(jié)構(gòu)初階】 【C語(yǔ)言】 【C++】
目錄
1 數(shù)組的概念2 一維數(shù)組的創(chuàng)建和初始化2.2 數(shù)組的初始化2.3 數(shù)組類(lèi)型
3 一維數(shù)組的使用3.1 數(shù)組下標(biāo)3.2 數(shù)組的輸入
4 一維數(shù)組在內(nèi)存中的存儲(chǔ)5 sizeof計(jì)算數(shù)組中的元素6 二維數(shù)組6.1 二維數(shù)組的概念6.2 二維數(shù)組的創(chuàng)建
7 二維數(shù)組初始化7.1 不完全初始化7.2 完全初始化7.3 按照行初始化7.4 省略行進(jìn)行初始化
8 二維數(shù)組的使用8.1 二維數(shù)組的下標(biāo)8.2 二維數(shù)組輸出和使用
9 二維數(shù)組在內(nèi)存中的存儲(chǔ)
1 數(shù)組的概念
數(shù)組是一組相同類(lèi)型元素的集合 :
數(shù)組中存放的是一個(gè)或多個(gè)數(shù)據(jù)數(shù)組中元素的個(gè)數(shù)不能為0數(shù)組中存放的數(shù)據(jù)他們的類(lèi)型都是相同的。 數(shù)組分為一維數(shù)組和多維數(shù)組,其中多維數(shù)組大部分指的是二維數(shù)組
2 一維數(shù)組的創(chuàng)建和初始化
一維數(shù)組創(chuàng)建的基本語(yǔ)法如下:
type arr_name[常量];
存放在數(shù)組中的值被稱(chēng)為數(shù)組元素,數(shù)組在創(chuàng)建的時(shí)候可以指定數(shù)組的大小和數(shù)組的元素類(lèi)型。
type:是數(shù)組的元素類(lèi)型可以是int 、char 、double 、float、還可以是自定義類(lèi)型arr_name:是數(shù)組的名字有意義即可[] : 里面存放的是數(shù)組元素的個(gè)數(shù),里面存放的是常量值
比如我們想創(chuàng)建某個(gè)班級(jí)里面10個(gè)學(xué)生的成績(jī),我們可以創(chuàng)建如下數(shù)組:
int manth[20];
2.2 數(shù)組的初始化
//完全初始化
int arr[5] = {1,2,3,4,5};
//不完全初始化
int arr_1[5] = {1}; //第一個(gè)元素初始化為1,其余元素初始化為0
//錯(cuò)誤初始化
int arr_2[5] = {1,2,3,4,5,6};//初始化項(xiàng)大于5
2.3 數(shù)組類(lèi)型
數(shù)組算是一種自定義類(lèi)型,去掉數(shù)組名剩下的就是數(shù)組類(lèi)型
int arr1[5] = {1,2,3,4,5}
char ch[6] = {'a','b','c','d','e','\0'}
arr1 的數(shù)組類(lèi)型就是 int [5] ch 的數(shù)組類(lèi)型就是 char [6]
3 一維數(shù)組的使用
3.1 數(shù)組下標(biāo)
C語(yǔ)言規(guī)定數(shù)組是有下標(biāo)的,下標(biāo)從0開(kāi)始,假設(shè)數(shù)組有n個(gè)元素,最后一個(gè)元素的下標(biāo)就是n-1。
int arr[10] = {1,2,3,4,5,6,7,8,9,10}
在C語(yǔ)言中提供了一個(gè) [] 操作符,我們可以通過(guò)數(shù)組的下標(biāo)直接訪問(wèn)這個(gè)元素如果我們想要訪問(wèn)7這個(gè)元素,它的下標(biāo)是6,那么就可以通過(guò)數(shù)組名[]的方式直接調(diào)用。
#include
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
for (int i = 0; i < 10; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
運(yùn)行結(jié)果: 每次打印數(shù)組數(shù)據(jù)的時(shí)候通過(guò) arr[下標(biāo)] 的方式來(lái)直接調(diào)用數(shù)組中的元素。
3.2 數(shù)組的輸入
如果我們想通過(guò)控制臺(tái)手動(dòng)向數(shù)組中輸入數(shù)據(jù)時(shí)應(yīng)該怎么辦呢?
#define _CRT_SECURE_NO_WARNINGS 1
#include
int main()
{
int arr1[5] = { 0 };
for (int i = 0; i < 5; i++)
{
scanf("%d", &arr1[i]);
}
for (int i = 0; i < 5; i++)
{
printf("%d ", arr1[i]);
}
return 0;
}
運(yùn)行結(jié)果:
4 一維數(shù)組在內(nèi)存中的存儲(chǔ)
依次打印數(shù)組中每個(gè)元素的地址:
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
for (int i = 0; i < 10; i++)
{
printf("%p\n", &arr[i]);
}
return 0;
}
運(yùn)行結(jié)果: 可以看到在內(nèi)存中他們的存儲(chǔ)空間是連續(xù)的10個(gè)空間,因?yàn)閿?shù)組中存儲(chǔ)的元素時(shí)int類(lèi)型所以每個(gè)數(shù)據(jù)的大小都是4個(gè)字節(jié)。 我們可以打開(kāi)另一個(gè)內(nèi)存窗口進(jìn)行觀察:
5 sizeof計(jì)算數(shù)組中的元素
sizeof是C語(yǔ)言中的關(guān)鍵字,可以計(jì)算類(lèi)型和變量的大小,也可以計(jì)算數(shù)組中元素的大小。
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
int arr_size1 = sizeof(arr);
int arr_size2 = sizeof(arr[1]);
printf("arr_size1 = %d\n", arr_size1);
printf("arr_size2 = %d\n", arr_size2);
return 0;
}
運(yùn)行結(jié)果: 可以看到arr_size1時(shí)整個(gè)數(shù)組元素的大小因?yàn)閿?shù)組元素的類(lèi)型是int,并且有十個(gè)數(shù)據(jù)所以整個(gè)數(shù)組的大小是40,而arr[1]使用了[]操作符得到的是數(shù)組下標(biāo)為1的數(shù)據(jù),他的類(lèi)型是int大小是四個(gè)字節(jié)。 接下來(lái)我們就可以計(jì)算數(shù)組中的元素個(gè)數(shù):
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
int arr_size1 = sizeof(arr);
int arr_size2 = sizeof(arr[1]);
printf("arr_size1 = %d\n", arr_size1);
printf("arr_size2 = %d\n", arr_size2);
int num = sizeof(arr) / sizeof(arr[1]);
printf("數(shù)組中元素的個(gè)數(shù)是 :%d",num);
return 0;
}
運(yùn)行結(jié)果: 這里的結(jié)果是10,表示數(shù)組中有十個(gè)元素。
6 二維數(shù)組
6.1 二維數(shù)組的概念
二維數(shù)組就是將一維數(shù)組作為自己的數(shù)組元素的數(shù)組。而三維數(shù)組就是以二維數(shù)組作為自己的數(shù)組元素,三維及以上數(shù)組被稱(chēng)為多維數(shù)組。
6.2 二維數(shù)組的創(chuàng)建
type arr_name[常量1][常量2];
int arr[3][4];
char ch[5][6];
int 是二維數(shù)組中的變量類(lèi)型3/5 表示創(chuàng)建的二維數(shù)組有3/5行4/6 表示有4/6列,即每一行有4/6個(gè)元素arr/ch 則是數(shù)組名有意義即可
7 二維數(shù)組初始化
在創(chuàng)建變量和數(shù)組的時(shí)候,給定一些值稱(chēng)為初始化。
7.1 不完全初始化
不完全初始化:
int main()
{
int arr1[3][5] = { 1,2 };
int arr2[3][4] = { 0 };
return 0;
}
初始化結(jié)果:
7.2 完全初始化
完全初始化 :
int arr3[2][2] = { 1,2,3,4 };
初始化結(jié)果:
7.3 按照行初始化
int arr4[3][5] = {{1,2},{3,4},{5,6}};
初始化結(jié)果 :
7.4 省略行進(jìn)行初始化
在定義二維數(shù)組的時(shí)候可以把第一個(gè)變量省略也就是省略行數(shù),但是每一行所有的元素個(gè)數(shù)(列數(shù))不能省略
int arr5[][3] = { 1,2,3,4,5,6,7,8 };
初始化結(jié)果:
8 二維數(shù)組的使用
8.1 二維數(shù)組的下標(biāo)
C語(yǔ)言規(guī)定二維數(shù)組的行和列的下標(biāo)都是從0開(kāi)始的
int arr[2][2] = {1,2,3,4};
下標(biāo):
8.2 二維數(shù)組輸出和使用
int main()
{
int arr[3][4] = { 0 };
//行
for (int i = 0; i < 3; i++)
{
// 列
for (int j = 0; j < 4; j++)
{
scanf("%d", &arr[i][j]);
}
}
//打印輸出
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 4; j++)
{
printf("%d ", arr[i][j]);
}
printf("\n");
}
return 0;
}
初始化結(jié)果 :
9 二維數(shù)組在內(nèi)存中的存儲(chǔ)
int arr[3][4] = { 0 };
內(nèi)存展示: 可以看到和一維數(shù)組一樣每個(gè)地址之間相差四個(gè)字節(jié),第一行的最后一個(gè)和第二行的第一個(gè)數(shù)組元素也是連續(xù)的并且相差了四個(gè)字節(jié)。
柚子快報(bào)邀請(qǐng)碼778899分享:【C語(yǔ)言】--數(shù)組
精彩文章
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。