• c语言的数组


    1、 数组的基本概念

    一个int类型的变量能保存一个人的年龄,如果想保存整个班的年龄呢?

    1. 什么是数组

    数组,从字面上看,就是一组数据的意思,没错,数组就是用来存储一组数据的

    2. 数组的特点
    ● 只能存放一种类型的数据,比如int类型的数组、float类型的数组
    ● 里面存放的数据称为“元素”

     

    2、 数组的定义
    1. 定义
    ● 声明数组的类型
    ● 声明数组的元素个数(需要多少存储空间)
    2. 格式

    元素类型 数组名[元素个数];

    比如:int ages[3];

    3. 简单使用
    ● 简单初始化:int ages[5] = {19, 19, 20, 21, 25};
    ● 元素有顺序之分,每个元素都有一个唯一的下标(索引),从0开始
    ● 数组元素的访问a[i]
    4. 初始化
    ● 初始化方式
    ◆ int a[3] = {10, 9, 6};
    ◆ int a[3] = {10,9};
    ◆ int a[] = {11, 7, 6};
    ◆ int a[4] = {[1]=11,[0] = 7};
    ● 常见错误
    ◆ int a[];
    ◆ int[4] a;
    ◆ int a[b];
    ◆ a = {10, 11};
    ◆ a[4] = {10,9,8,5}; 

     // 错误写法

        /* 只能在定义数组的同时进行初始化

        int ages[5];

        ages = {10, 11, 12, 14};

        */

        

        // 正确写法

        // int ages['A'-50] = {10, 11, 12, 14, 16};

        //int size = sizeof(ages);

        //printf("%d ", size);

        

        // 正确写法

        /*

        int count = 5;

        int ages[count];

        ages[0] = 10;

        ages[1] = 11;

        ages[2] = 18;

        */

        // 错误写法

        // 如果想再定义数组的同事进行初始化,数组元素个数必须是常量,或者不写

        //int ages[count] = {10, 11, 12};

        

    5. 内存分析
    ● 数组存储空间的大小
    ● 存储空间的划分(内存的分配是从高地址到低地址进行的,但一个数组内部元素又是从低到高进行的
    ● 数组名的作用,查看元素地址
    ● 数组越界的注意
    6. 其他使用
    ● 数组与函数参数
    ◆ 数组元素作为函数参数
    ◆ 数组作为函数参数sizeof注意)
    ● 遍历数组元素:

             遍历:按顺序查看数组的每一个元素

    ◆ 两种方式遍历while循环和for循环)
    ◆ 遍历元素值和元素地址
     1 #include <stdio.h>
     2 int main()
     3 {
     4     int ages[] = {10, 11, 12, 78};
     5     
     6     // 计算数组元素的个数
     7     int count = sizeof(ages)/sizeof(int);
     8     
     9     for (int i = 0; i<count; i++)
    10     {
    11         printf("ages[%d]=%d
    ", i, ages[i]);
    12     }
    13     
    14     return 0;
    15 }
    ◆ 字符数组的使用
    7. 习题
    1> 提示输入5个学生的成绩,算出平均分(最高分、最低分),然后输出
     1 #include <stdio.h>
     2 int main()
     3 {
     4     // 1.定义一个数组来存储成绩
     5     int scores[5];
     6     
     7     // 2.提示输入成绩
     8     // 用来存储总分
     9     int sum = 0;
    10     for (int i = 0; i<5; i++) {
    11         // 2.1 提示输入某个学生的成绩
    12         printf("请输入第%d个学生的成绩:
    ", i + 1);
    13         // 2.2 存储当前学生的成绩
    14         scanf("%d", &scores[i]);
    15         // 2.3 累加成绩
    16         sum += scores[i];
    17     }
    18     
    19     // 3.计算平均分,并且输出
    20     printf("平均分是%f
    ", sum/5.0);
    21     return 0;
    22 }
    2> 设计一个函数int arrayMax(int a[], int count)找出数组元素的最大值
     1 #include <stdio.h>
     2 
     3 int arrayMax(int a[], int count)
     4 {    // 数组当做函数参数传递时,会当做指针变量来使用,指针变量在64bit编译器环境下,占据8个字节
     5     
     6     //int size = sizeof(a);
     7     //printf("a=%d
    ", size);
     8     
     9     //sizeof(a);
    10     
    11     // 1.定义一个变量存储最大值(默认就是首元素)
    12     int max = a[0];
    13     
    14     // 2.遍历所有元素,找出最大值
    15     for (int i = 1; i<count; i++)
    16     {
    17         // 如果当前元素大于max,就用当前元素覆盖max
    18         if (a[i] > max)
    19         {
    20             max = a[i];
    21         }
    22     }
    23     
    24     return max;
    25 }
    26 
    27 int main()
    28 {
    29     int ages[] = {11, 90, 67, 151, 78, 60, 70, 89, 100};
    30     
    31     int ages2[] = {11, 90, 67, 150, 78, 60, 70, 89, 100};
    32     
    33     //int size = sizeof(ages);
    34     
    35     //printf("ages=%d
    ", size);
    36     int max = arrayMax(ages, sizeof(ages)/sizeof(int));
    37     
    38     printf("%d
    ", max);
    39     return 0;
    40 }
    3> 设计一个函数int arraySum(int a[], int n),求一维数组an个数的和
     
    4> 设计一个函数:将一维整型数组中的元素逆序存放。比如本来是1,3,4,2,逆序存放就变成了:2431

     

    3、 二维数组
    1. 什么是二维数组
    ● 一个数组能表示一个班人的年龄,如果想表示很多班呢?
    ● 什么是二维数组?int ages[3][10]; 三个班,每个班10个人
    ● 相当于310
    ● 相当于装着3个一维数组
    ● 二维数组是一个特殊的一维数组它的元素是一维数组例如int a[2][3]可以看作由一维数组a[0]和一维数组a[1]组成这两个一维数组都包含了3int类型的元素
     
    2. 存储
    ● 存储大小
    ● 存储结构和顺序
    ● 存储地址问题

     

    3. 初始化
    ● int a[3][4] = {1,2,3,4,5,6};
    ● int a[3][4] = {{},{},{}};
    ● 数组元素简单访问
    ● int a[][5] = {3,21,31,2,32,1};
    ● 注意错误:

    int a[3][4];

    a[3] = {};

     

    4. 遍历
    ● 遍历所有的元素
    ● 遍历地址
    ● 使用场合:五子棋、俄罗斯方块    

     

     

     

  • 相关阅读:
    深度学习之TensorFlow(一)——基本使用
    64位win10+cuda8.0+vs2013+cuDNN V5下Caffe的编译安装教程并配置matlab2014a 接口
    Win10+vs2012+cuda8.0的安装与配置
    图像处理与matlab实例之图像平滑(一)
    Windows下pycharm使用theano的方法
    Python中的支持向量机SVM的使用(有实例)
    混淆矩阵在Matlab中PRtools模式识别工具箱的应用
    模式识别与机器学习—bagging与boosting
    微服务架构下分布式事务解决方案——阿里GTS
    谈谈分布式事务
  • 原文地址:https://www.cnblogs.com/zhangxiaomeng1991/p/4152520.html
Copyright © 2020-2023  润新知