清华计算机技术学院 |48~51节
1️⃣二维数组的概念
1. 定义:二维数组是一种数据结构,一种特殊的数组,可以被视为一个“数组的数组”。在二维数组中,数据以行和列的形式组织,类似于数学中的矩阵或一个表格。
2. 必须保持所有元素数据类型一致。
2️⃣定义一个二维数组(初始化和赋值)
二维数组在内存中也是连续一排的,并不是一个矩阵的结构,只是表现出来是矩阵的。因此初始化时可以省略花括号,像一维数组那样初始化。
3️⃣访问二维数组元素
可以通过行索引和列索引来访问二维数组中的元素。例如,arr[0][1]
访问的是数组中第一行第二列的元素。
4️⃣二维数组的内存存储
5️⃣练习
💡打印一个二维数组
#include <stdio.h>
int main()
{
int arry[3][4] = {1,2,3,4,5,6,7,8,'a','b','c','d'};
for(int a = 0;a < 3;a++)
{
for(int b = 0;b<4;b++)
{
printf("arry[%d][%d] = %d ",a,b,arry[a][b]);
}
printf("\n");
}
return 0;
}
//由于数组 arry 被定义为一个整型数组(int arry[3][4]),
//当在其中存储字符时(如 'a', 'b', 'c', 'd'),
//这些字符实际上是以它们的ASCII值存储的
//因此('a', 'b', 'c', 'd')会被自动转换成它们的ASCII值。
//输出
//arry[0][0] = 1 arry[0][1] = 2 arry[0][2] = 3 arry[0][3] = 4
//arry[1][0] = 5 arry[1][1] = 6 arry[1][2] = 7 arry[1][3] = 8
//arry[2][0] = 97 arry[2][1] = 98 arry[2][2] = 99 arry[2][3] = 100
如果想打印出a,b,c,d而不是他们的ASCII值该怎么做:需要在 printf
函数中检查当前元素是否是字符。由于ASCII值的范围,您可以检查元素是否在字符型数据的ASCII范围内。字符的ASCII值范围通常是从32(空格)到126(波浪号)。
如下:
#include <stdio.h>
int main()
{
int arry[3][4] = {1, 2, 3, 4, 5, 6, 7, 8, 'a', 'b', 'c', 'd'};
for(int a = 0; a < 3; a++)
{
for(int b = 0; b < 4; b++)
{
// 检查元素是否是字符范围内的ASCII值
if (arry[a][b] >= 32 && arry[a][b] <= 126) {
printf("arry[%d][%d] = %c ", a, b, arry[a][b]);
} else {
printf("arry[%d][%d] = %d ", a, b, arry[a][b]);
}
}
printf("\n");
}
return 0;
}
//printf 会检查每个元素。
//如果元素的值在32到126之间,它将使用 %c 格式说明符将其打印为字符。
//否则,它将使用 %d 将其打印为整数。
//这样,字符 'a', 'b', 'c', 'd' 将作为字符而非它们的ASCII值被打印。