C语言3

发布时间 2023-07-12 08:46:38作者: -seventy-
// 内容:(一维二维)数组



/*
    1.数组长度:整数,常量表达式,自动获取长度
    ---但是不可以用小数
    ---也不可以是变量,数组在定义时系统会根据数组类型和大小为其分配内存空间
    ---对于这种情况的初始化操作,可以省略不写数组长度,它会自动识别:int c[] = {30, 31, 32, 33};
    2.数组内存是连续的
*/

int main()
{
    int a[5] = {1,2,3};    // 数组的初始化,左边代码只初始化了3个,剩下的2个使用默认值0
    int b[4];    // 由“数组名[下标]”组成,下标从零开始
    b[0] = 10;
    b[1] = 20;
    b[2] = 30;
    b[3] = 40;

    int num[100];

    // 遍历赋值
    for (int i = 0; i < 100; i++)
    {
        num[i] = i;
    }

    // 遍历读取
    for (int i = 0; i < 100; i++)
    {    
        if (i % 10 == 0)    // 每10个数就换一次行
            printf("\n");

        printf("%-3d", num[i]);    // 左对齐,共3位,“数据的位”不足就用空格补位
    }

    return 0;
}

/*
    二维数组的定义形式:
        类型  数组名[行数][列数];
        char a[5][3];


    二维数组的初始化
        按行初始化
            int arr[2][3] = {
                {0, 1},        // 初始化过程中,遇到没有值的,就默认为0(下面同理)
                {10, 11, 12}
            };
        顺序初始化
            int arr[2][3] = {0, 1, 2, 10, 11, 12};

        int arr[][3] = {        // 行可以省略,列不能省略!!
            {0, 1},
            {10, 11, 12}
        };

        ____________________________________________________________________________
        假如你省略行数,但是确定了列数,
        计算机会根据你的列数的数值以及你初始化时给的数据,自动确定行数,
        因此行数可以省略。
        但是如果给了行数但没有确定列数,
        对于你初始化的数据,计算机不知道怎么划分,是平均分呢?还是其他方式分呢?
        这是没有规定的,这样子会出现错误。
        ____________________________________________________________________________
        1、可以同时指定第一维和第二维的长度
        2、可以只指定第二维的长度
        3、不可以只指定第一维的长度
        4、不可以第一维和第二维的长度都不指定
        综上所述,至少指定第二维的长度
        ____________________________________________________________________________
*/