数组(不是重点)--c语言个人笔记【五】

本文是关于C语言中数组的个人笔记,包括数组的作用、一维数组的定义、操作、赋值,以及二维数组的介绍和初始化。强调了数组在编程中的重要性和一些注意事项,如数组长度固定和初始化方式。
摘要由CSDN通过智能技术生成

# c语言个人笔记

==E.menos==

==代码规范性!!!==

* 如何看懂一个程序?

    1. 流程

    2. 每个语句的功能

    3. 试数

## 五. 数组

### 5.1 数组(不作为学习重点)

+ 为什么需要数组

    1. 解决大量同类型数据的存储和使用问题
    2. 模拟现实世界( 一维 二维 三维 )

    ```c
    # include <stdio.h>

    int main(void)
    {
        int a[5]={1,2,3,4,5};

            //a是数组的米棒子, 5表示数组的个数, 这五个元素分别用a[0] - a[4]表示

        int i;

        for(i=0; i<5; ++i)
            printf("%d\n",a[i]);

            //a[i]表示第 i+1 个元素

        return 0;
    }
    ```

    数组不作为学习的重点:数组长度是个死值且缺少很多功能(需要编程别的代码);故原始数组用处不多

### 5.2 数组的分类

+ 一维数组
    
    1. 定义
        + 为n个变量连续分配存储空间
        + 所有变量的类型必须相同
        + 所有变量所占字节必须相等
    
    2. 操作
        + 初始化
          + 完全初始化
                int a[5] = {1,2,3,4,5};

            
          + 不完全初始化
                int a[5] = {1,2,3};
            不完全初始化,未被初始化的元素为0
        *不初始化,所有的元素都是垃圾值*
        *int a[5];p*
          + 清零
            q   int a[5] = {0};
          + 错误写法
            ```c
                int a[5];
                //定义时的“5”是指个数,定义后出现的“5”时是下标
                a[5] = {1,2,3,4,5};
            ```
            只有在定义数组的同时才可以整体赋值
            其他情况下整体赋值都是错误的
            ```c
                int a[5]={1,2,3,4,5};
                a[5] = 100; //error 因为没有a[5]这个元素,最大是a[4]
            ```
            ```c
                int a[5] = {1, 2, 3, 4, 5};
                int b[5];
                //要把a数组的元素全部赋值给b数组
                //错误写法:    b = a;
                //正确写法:
                for (i=0; i<5; ++i)
                    b[i] = a[i];
            ```
            一维数组名不代表数组中的所有的元素
            一位数组名代表数组第一个元素的地址
        + 赋值
        + 排列
        + 求最大/小值
        + 倒置
        + 查找
        + 插入
        + 删除

+ 二维数组
    ```c
        int a[3][4];
        //共有12个元素,看作三行四列,元素的名字分别为
        //a[0][0] a[0][1] a[0][2] a[0][3]
        //a[1][0] a[1][1] a[1][2] a[1][3]
        //a[2][0] a[2][1] a[2][2] a[2][3]
        //a[3][0] a[3][1] a[3][2] a[3][3]

        //a[i][j]表示第i+1行 第j+1列的元素;
        //int a[i][j]:该二维数组右下角位置的元素只能是a[i-1][j-1];
    ```
    ```c
        初始化:
            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}
            };
    ```
    操作:输出二维数组内容
    ```c
    #include <stdio.h>

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

        //输出二维数组内容
    
        for (i=0; i<3; ++i)
        {
            for (j=0; j<4; ++j)
                printf("%d\n",a[i][j]);
            printf("\n")
        }
        }
    ```

+ 多维数组

    + 是否存在多维数组
        不存在
        因为内存是线性一维的
        **n维数组可以当做每个元素是n-1维数组的一维数组**
            比如
                int a[3][4];
                    该数组是含有三个元素的一维数组
                    只不过每个元素都可以再分成4个小数组
                int a[3][4][5];
                    该数组是含有三个元素的一维数组
                    只不过每个元素都是4行五列的二维数组

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值