二维数组C

在内存中有下边一段数据:

如果它被定义为一个 5 行 4 列的二维数组(a[5][4]),那么请问 a[3][3] 的值是多少?

答:从概念模型来看,这个二维数组应该是下边这样。

So,a[3][3] 的值就是 4 行 4 列的值啦(从 0 开始数,还记得吗?)。

请问下边代码是初始化一个几行几列的二维数组?

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

答:是一个 3 行 4 列的二维数组。由于我们这里只初始化了 10 个元素,并指定了该数组有 4 列,a[2][4] 是不够放了,只能用 a[3][4] 来存放,剩余的空间初始化为 0。

假设有一个五维数组,如果要遍历其中的每一个元素,应该使用几层循环嵌套合适?

答:五层,每一层一个维数,简单好记。

下边用二维数组来存放 5 句口号,请问需要使用几层循环嵌套将它们打印出来?

答:一层(不用嵌套),请看下边代码。

#include <stdio.h>

#define NUM 5

int main()
{
        char slogans[NUM][100] = {
                "I love FishC.com!",
                "Keep moving!",
                "Impossible is nothing!",
                "Just do it!",
                "I am what I am!"};
        int i;

        for (i = 0; i < NUM; i++)
        {
                printf("%s\n", slogans[i]);
        }

        return 0;
}

问:那为啥上边的空白这么一大块?

答:哇哈哈哈,这特么的都是套路呐!

如何获取二维数组 a 的长度?答:sizeof(a) / sizeof(a[0][0]),这是最好的方法,没有之一。

 请问二维数组 a[4][5] 是 4 行 5 列还是 5 行 4 列呢?答:其实两种答案都是正确的。因为几行几列实际上只是我们为了方便大家理解和想象而构造出来的概念模型。实际上在内存中,它的存储方式仍然一维数组的线性方式扩展开而已。但无论你的程序采用哪一种解释方法,都请坚持使用同一种方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

倦504

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值