zoukankan      html  css  js  c++  java
  • 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. 遍历
    ● 遍历所有的元素
    ● 遍历地址
    ● 使用场合:五子棋、俄罗斯方块    

     

     

     

  • 相关阅读:
    防火墙透明模式
    HP管理工具System Management Homepage安装配置
    kbmmw 中JSON 中使用SQL 查询
    kbmmw 中JSON 操作入门
    第一个kbmmw for Linux 服务器
    kbmmw 5.02发布
    kbmmw 5.01 发布
    使用delphi 10.2 开发linux 上的Daemon
    使用unidac 在linux 上无驱动直接访问MS SQL SERVER
    使用delphi 10.2 开发linux 上的webservice
  • 原文地址:https://www.cnblogs.com/zhangxiaomeng1991/p/4152520.html
Copyright © 2011-2022 走看看