目錄
零基礎 C/C++ 學習路線推薦 : C/C++ 學習目錄 >> C 語言基礎入門
一.二維數組簡介
在 C
語言中,一組數據的集合稱為數組 Array
,也稱為一維數組,比如:字符串 char
,實際上也算是數組,字符串由多個字符構成;
而二維數組和一維數組類似,簡單理解就是:二維數組由多個一維數組構成,語法如下:
type arrayName [ x ][ y ];
//x的取值范圍:0 <= index < x 下標重0開始,最大值為x-1,否則會產生下標越界
//y的取值范圍:0 <= index < y 下標重0開始,最大值為y-1,否則會產生下標越界
因此,數組中的每個元素是使用形式為 a[ i , j ] 的元素名稱來標識的,其中 a 是數組名稱,i 和 j 是唯一標識 a 中每個元素的下標。
二維數組中的每一個數據叫做數組元素 Element
,二維數組中的每個元素都有一個序號,這個序號由 x
和 y
組成(即橫向坐標和縱向坐標),都是從 0
開始,例如,a[0][6]
表示第1
行第7
個元素,a[3][1]
表示第 4
行第2
個元素;
舉個例子:定義一個這樣的二維數組
int a[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}};
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-vho32HiP-1629616389974)(https://www.codersrc.com/wp-content/uploads/2021/06/e4da3b7fbbce234.png “C 語言 二維數組定義和使用-猿說編程”)]
二維數組本質就是一個一維數組。如果把二維數組的每一行看成一個整體,即看成一個數組中的一個元素,那么整個二維數組就是一個一維數組。
二.定義二維數組並初始化
1.定義二維數組
要想把數據放入內存,必須先要分配內存空間。例如:放入4
個一維數組,8
個整數,即 4 行 8 列:
//整形數組
int a[4][8];//由4個一維數組構成,索引值0~3;每個一維數組中有8個整形變量,索引值0~7;
//浮點數數組
float a[4][8];//由4個一維數組構成,索引值0~3;每個一維數組中有8個浮點數變量,索引值0~7;
//浮點數數組
double a[4][8];//由4個一維數組構成,索引值0~3;每個一維數組中有8個浮點數變量,索引值0~7;
//字符串
char a[4][8];//由4個一維數組構成,索引值0~3;每個一維數組中有8個字符變量,索引值0~7;
2.初始化二維數組
A.在定義二維數組的同時賦值
多維數組可以通過在括號內為每行指定值來進行初始化。下面是一個帶有 3 行 4 列的數組。
int a[3][4] = {
{0, 1, 2, 3} , /* 初始化索引號為 0 的行 */
{4, 5, 6, 7} , /* 初始化索引號為 1 的行 */
{8, 9, 10, 11} /* 初始化索引號為 2 的行 */
};
內部嵌套的括號是可選的,下面的初始化與上面是等同的:
int a[3][4] = {0,1,2,3,4,5,6,7,8,9,10,11};
B.根據二維數組下標對數組元素賦值
在通過下標修改二維數組的值時,需要注意 數組下標越界 的問題;
a[4][2]; //定義一個二維數組
a[0][0]=10;
a[0][1]=20;
a[1][0]=30;
a[1][1]=40;
a[2][0]=50;
a[2][1]=60;
a[3][0]=70;
a[3][1]=80;
//a[0][3]=20; //錯誤寫法,下標越界
//a[0][2]=20; //錯誤寫法,下標越界
//a[4][2]=20; //錯誤寫法,下標越界
等價:
a[4][2]= {10,20,30,40,50,60,70,80}
等價:
a[4][2] = {
{10,20},
{30,40},
{50,60},
{70,80}
}
C.只給部分元素賦初值,當{ }中值的個數少於元素個數時,只給前面部分元素賦值,后面的元素默認為0
值
//案例一
int a[3][4] = {{1},{2},{3}};
等價:
int a[3][4] = {{1,0,0,0},{2,0,0,0},{3,0,0,0}};
//案例二
int a[3][4] = {{1}};
等價:
int a[3][4] = {{1,0,0,0},{0,0,0,0},{0,0,0,0}};
當賦值的元素少於數組總體元素的時候,剩余的元素自動初始化為 0
:
對於short、int、long,就是整數0;
對於char,就是字符 '\0';
對於float、double,就是小數0.0。
三.訪問二維數組
數組中的每個元素都有一個序號,這個序號從 0
開始,稱為下標 index
,例如,a[0][2]
表示第 1
行第 3 個元素,a[3][5]
表示第 4 行第 6
個元素。所以我們可以直接通過下標訪問數組中元素的值,例如:
/******************************************************************************************/
//@Author:猿說編程
//@Blog(個人博客地址): www.codersrc.com
//@File:C語言教程 - C語言 二維數組定義和使用
//@Time:2021/06/12 08:00
//@Motto:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅持不懈地積累!
/******************************************************************************************/
#include <stdio.h>
int main(void) {
int a[3][4] = {{1,2,3,4},{2,4,6,8},{3,6,9,0}};
for (int i = 0 ;i<3;i++) {
for(int j = 0;j<4;j++)
printf("a[%d][%d] = %d ",i,j,a[i][j]);//根據下標查詢
//換行
printf("\n");
}
return 0;
}
/*
輸出:
a[0][0] = 1 a[0][1] = 2 a[0][2] = 3 a[0][3] = 4
a[1][0] = 2 a[1][1] = 4 a[1][2] = 6 a[1][3] = 8
a[2][0] = 3 a[2][1] = 6 a[2][2] = 9 a[2][3] = 0
*/
四.修改二維數組
我們既然可以通過數組下標訪問數組的值,那么同樣也可以使用下標修改數組的值,例如:
/******************************************************************************************/
//@Author:猿說編程
//@Blog(個人博客地址): www.codersrc.com
//@File:C語言教程 - C語言 二維數組定義和使用
//@Time:2021/06/12 08:00
//@Motto:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅持不懈地積累!
/******************************************************************************************/
#include <stdio.h>
int main(void) {
int a[3][4] = {{1,2,3,4},{2,4,6,8},{3,6,9,0}};
for (int i = 0 ;i<3;i++) {
for(int j = 0;j<4;j++)
printf("a[%d][%d] = %d ",i,j,a[i][j]);//根據下標查詢
//換行
printf("\n");
}
printf("-------------------------------------------\n");
//修改數組的值
for (int i = 0 ;i<3;i++) {
for(int j = 0;j<4;j++)
a[i][j] *= 10 ;//等價 a[i][j] = a[i][j] * 10
//換行
printf("\n");
}
//查詢修改后數組的值
for (int i = 0 ;i<3;i++) {
for(int j = 0;j<4;j++)
printf("a[%d][%d] = %d ",i,j,a[i][j]);//根據下標查詢
//換行
printf("\n");
}
return 0;
}
/*
輸出:
a[0][0] = 1 a[0][1] = 2 a[0][2] = 3 a[0][3] = 4
a[1][0] = 2 a[1][1] = 4 a[1][2] = 6 a[1][3] = 8
a[2][0] = 3 a[2][1] = 6 a[2][2] = 9 a[2][3] = 0
-------------------------------------------
a[0][0] = 10 a[0][1] = 20 a[0][2] = 30 a[0][3] = 40
a[1][0] = 20 a[1][1] = 40 a[1][2] = 60 a[1][3] = 80
a[2][0] = 30 a[2][1] = 60 a[2][2] = 90 a[2][3] = 0
*/
五.猜你喜歡
- 安裝 Visual Studio
- 安裝 Visual Studio 插件 Visual Assist
- Visual Studio 2008 卸載
- Visual Studio 2003/2015 卸載
- C 語言格式控制符/占位符
- C 語言邏輯運算符
- C 語言三目運算符
- C 語言逗號表達式
- C 語言 sizeof 和 strlen 函數區別
- C 語言 strcpy 和 strcpy_s 函數區別
- C 語言 memcpy 和 memcpy_s 區別
- C 語言 數組定義和使用
- C 語言 數組遍歷
- C 語言 數組排序 – 冒泡法排序
- C 語言 數組排序 – 選擇法排序
- C 語言 數組排序 – 插入法排序
- C 語言 數組排序 – 快速法排序
- C 語言 數組下標越界
- C 語言 數組內存溢出
- C 語言 數組下標越界和內存溢出區別
- C 語言 二維數組定義和使用
未經允許不得轉載:猿說編程 » C 語言 二維數組定義和使用
本文由博客 - 猿說編程 猿說編程 發布!