C语言二维数组(简单好理解)


笔记内容已上传个人博客,推荐在个人博客网站观看!

♪(*)欢迎肥来!二维数组 | 洛希的智慧之殿堂 (luoxi.work)

二维数组

①二维数组的定义

类型 数组名[常量表达式][常量表达式]
int a[6][6];//6*6, 6行6列
char b[4][5];//4*5, 4行5列
double c[6][3];//6*3,6行3列

大概的存放形式于下图所示

image-20221203221324668

②二维数组的访问

数组名[下标][下标];
a[0][0];//访问a数组中第1行第1列的元素
b[1][3];//访问b数组中第2行第4列的元素
c[3][3];//访问c数组中第4行第4列的元素

注意:在二维数组中同样要注意下标的取值范围,以防止数组的越界访问

比如int a[3] [4],其“行下标”的取值范围是0-2,“列下标”的取值范围是0-3,超出任何一个下标的访问都是越界访问。

③二维数组的初始化

1.由于二维数组在内存中是线性存放的,因此可以将所有的数据写在一个花括号内

int a[3][4] = {1,2,3,4,5,6,7,8,9,10,12}

如果我们需要将这些数字打印出来,我们可以运用以下的一串代码将其实现,

#include <stdio.h>
int main()
{
    int a[3][4] = { 1,2,3,4,5,6,7,8,9,10,11,12 };
    int i, j;
    for (i = 0; i < 3; i++)
    {
        for (j = 0; j < 4; j++)
        {
            printf("%d ", a[i][j]);
        }
        printf("\n");
    }
    return 0;
}

对于以上的代码的输出结果如下图所示

image-20221210202511998

2.为了更加直观地表示元素的分布,可以利用花括号将每一行的元素括起来

int a[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};

或者

int a[3][4] =
{
{1,2,3,4},
{5,6,7,8},
{9,10,11,12}
};

3.二维数组也可以仅对部分的元素赋初值

int a[3][4] = {{1},{5},{9}};

对于以上这种形式大家是否有个疑惑。

就是这个究竟是给数组的第一行的前三个元素进行赋值,还是给前三行的第一个元素赋值呢?

对于以上的疑问我们可以进行用一串代码来解答下这个疑问。

#include <stdio.h>
int main()
{
    int a[3][4] = {{1},{5},{9}};
    int i, j;
    for (i = 0; i < 3; i++)
    {
        for (j = 0; j < 4; j++)
        {
            printf("%d ", a[i][j]);
        }
        printf("\n");
    }
    return 0;
}

这行代码就是将数组内的赋值改成以上的形式。

它的输出结果会是怎么样呢?

image-20221210203533403

通过以上的结果可以看到,很明显第二个想法是正确的!

4.如果希望整个二维数组初始化为0,那么直接在大括号里写一个0即可

int a[3][4] = {0};

5. C99同样增加了一个新特性:指定初始化的元素。这样就可以只对数组中的某些指定元素初始化赋值,而未被赋值的元素自动初始化为0

int a[3][4] = {[0][0] = 1, [1][1] = 2, [2][2] = 3 };

6.二维数组的初始化也能偷懒,让编译器根据元素的数量计算数组的长度。但只有第一维度的元素个数可以不写,其他维度必须写上

int a[][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值