• C语言基本语法——数组


      一、一维数组

      1、什么是数组

      2、数组语法

      3、下标

      4、初始化

      5、数组名和数组首地址

      二、一维数组的应用

      1、数组的赋值与拷贝  

      2、数组的正反遍历

      3、随机数

      4、数组乱序

      5、数组的重复

      三、二维数组

      1、数组的数组

      2、二维数组的初始化

      3、二维数组的数组名

      四、二维数组的应用

      1、二维数组与二维表

      2、下标计算

    一、一维数组

      1、什么是数组

      • 数组是用来存储多条相同数据类型的数据结构。(容器)

      分析关键点:

    -多条
    -类型相同

    -数组是数据的容器,而非数据本身
    -数组中的每一个数据,叫元素,数组由多个元素(数据)组成。-数据下标(索引)来区分数据中的元素
    -元素从数组的位置0开始

    -元素可以使用数组变量名[下标]来得到具体的元素-数组中元素的个数叫数组的长度
    -数组所占空间=元素的类型*数组的长度
    -数组是一段连续的内存区域 指针
    -数组变量指向的区域,是数组在内存中的首地址

      2、数组语法

      • 定义数组: 元素类型 数组名[元素个数];

      int array[3];

      • 访问元素: 数组名[下标]

      array[0] = 10;

      3、下标

      • 下标是指访问数组元素时,中括号中的数字

      • 下标不能越界,如果越界,可能会导致以下后果:

    –程序直接崩溃
    –莫明的改变了其他变量或数据空间的值
    –什么事儿都没有

      4、初始化

      • 赋使用的值

      int array2[3]={3,4,5};//依次给数组元素赋值
      int array4[3]={1,2};//如果赋值的个数少于数组 的长度,会 自动用0来填充后面的值

      • 赋零值

      int array[3];//未初始化 可能存在垃圾时

      int array3[3]={0};//数组中每个元素是0

      5、数组名和数组首地址

      • 数组名是一个地址,而且是不可变的地址

      • 数组名不可以做为左值,就是不能出现在赋值语句的左边。初始化除外。

      • 数组名是常量(指针)。 所以不能赋值

      二、一维数组的应用

      1、数组的赋值与拷贝  

      • 数组的赋值

    int array[10];
    array[2] = 10;//将数组的第三个元素赋值为10

      • 数组的拷贝

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

    int num [10];
    for (int i = 0; i < 10; i++)

      num[i] = array[i];

      2、数组的正反遍历

      • 数组的正向遍历

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

    for (int i = 0; i < 10; i++)

      printf(“%d ”,array[i]);

      • 数组的反向遍历

    for (int i = 9; i >= 0; i--)

      printf(“%d ”,array[i]);

      3、随机数

      • rand()函数用于生成一个随机数

      • srand()函数用于定义随机种子

    int main() {

      srand((unsigned)time(0));   

      for (int i=0; i<10; i++) {

        int x = rand() % 100;

      } 

      printf("%d ", x);

      printf(" ");

      return 0;

    }

      4、数组乱序

      • 数组乱序是指将数组中的元素随机排列

    int main() {

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

      srand((unsigned)time(0));
      for (int i=0; i<10; i++) {

        int x = rand() % (10 - i) + i;

         int temp = array[i];
        array[i] = array[x];

      } 

      array[x] = temp;

      for (int i=0; i<10; i++)

        printf("%d ", array[i]);

      return 0;

    }page17image5774240

      5、数组的重复

      • 数组元素的重复是指将数组中存在相同的数组元素

     

      三、二维数组

      1、数组的数组

      • 定义数组: 元素类型 数组名[元素个数] [元素个数];

    int array[3][4];

      • 访问元素: 数组名[下标] [下标]

    array[1][2] = 10;

      2、二维数组的初始化

      • 对应元素内容

    int array2[3][2]={{1,2},{3,4},{5,6}};

      • 整体赋值

    int array2[3][2]={1,2,3,4,5,6};

      • 依次赋值 自动补零

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

      3、二维数组的数组名

      • 二维数组名同样是一个地址,而且是不可变的地址

      • 二维数组名同样不可以做为左值,就是不能出现在赋值语 句的左边。初始化除外。

      • 二维数组名是常量(指针)。 所以不能赋值

      四、二维数组的应用

      1、二维数组与二维表

      • 二维数组其实是数组的数组
      • 可以将二维数组理解为一张几行几列的二维表。

      2、下标计算

      • 二维数组在内存中的存放方法是先存放列再存放行

    eg:int array[3][4];

    在内存的存放顺序是:

    array[0][0]

    array[0][1]

    array[0][2]

    array[0][3]

    array[1][0]

    array[1][1]

    array[1][2]

    array[1][3]

    array[2][0]

    array[2][1]

    array[2][2]

    array[2][3]

  • 相关阅读:
    Git使用感悟
    Just open sourced the JavaScript Inlay Hints Provider function in IDEA plugin React Native Console commercial version
    Flutter和React Native组件层级对比
    React Native 迁移到 Flutter 心得体会[持续更新中]
    IntelliJ IDEA 2020.3 EAP 新特性: 拖动分割编辑器,新欢迎窗口等
    Universal Abstract Syntax Tree (UAST)
    Creating your first Flutter project using WebStorm 2020
    WIN10系统跑流量,彻底杜绝win10更新程序后台下载
    linux centos7安装mysql5.7(安装版)教程
    VMware启动虚拟机一直处于黑屏且无反应
  • 原文地址:https://www.cnblogs.com/yyt-hehe-yyt/p/8953648.html
Copyright © 2020-2023  润新知