第十周 5.7 数组(一)

数组


一、理解
        1.数组:一次性的定义多个同类型的变量,可以存储多个数据,而且可以对多个变量进行统一管理

        2.数组的重要因素:数据类型、数组的长度
        3.数组的使用:
                (1)声明数组:确定数据类型

                     数据类型[] 数组名;  //建议

                     数据类型 数组名[];

                     数据类型 []数组名;
                     int[ ] a:
                (2)分配空间:确定数组的长度

                     数组名= new 数据类型[长度];
                     a = new int[4];
        4.细节:

                (1)数组下标:从0开始,依次为 0、1、2.3...数组的长度-1
                (2)访问数组时,采用数组名+下标,数组名[下标]
                (3)操作数组时,给定的下标不在合理范围内,编译通过,运行报错,错误信息为:
                        java.lang.ArrayIndexOutofBoundsException:(数组的下标越界)
                (4)//对数组元素进行-- ,称为数组的遍历

                        for(int i=0;i<5;i++){
                                System.out.print]n("i="+i+"对应的元素为:"+ages[i]);

                        }
                (5)获取数组的长度:数组名.length
        5.数组的默认值:

                整数类型:0
                小数类型:0.0
                布尔类型:false

                字符类型:空字符

                引用类型:null
        6.数组 不同定义方式:
                (1)先声明,再分配空间;

                     数据类型[]数组名;
                     数组名 = new 数据类型[长度];
                (2)声明的同时并分配空间:
                        数据类型[]数组名 = new 数据类型[长度];
                (3)显示初始化:

                        数据类型[]数组名= new 数据类型 []{值1,值2,值3};
                (4)显示初始化:

                        数据类型[] 数组名={值1,值2,值3};

               注意:数组的声明和初始化一起完成

二、数组的内存
        1.数组在内存中空间是连续的
        2.数组类型的变量,存储是数组内存在空间的首地址
        3.寻址方式:首地址+下标*数据类型字节数

三、数组的扩容
        1.思想:
                (1)创建一个更大空间的新数组,通常为原数组的2倍
                (2)将原数组的内容进行---赋值到新的数组中
                (3)新地址覆盖旧地址
        2.扩容的实现:
                (1)第一种方式:

                        int[ ]a={4,7,3};// 数组的长度为
                        System.out.printin("数组的长度为:"+a.length);
                        for(int i=0;i<a.length;i++){

                                System.out.print(a[i]+" ");

                        }
                        System.out.printin();
                        //将数据8 存储到 a数组中,不够用,扩容
                        // 1.创建一个更大长度的数组
                        int[ ] b = newint[a.length*2];
                        //2.将原数组的内容----赋值新数组中
                        for(int i=0:i<a.length:i++){

                                // 新的数组中 = 原数组中内容b[i] = a[i];

                        }
                        //3.新的地址覆盖旧的地址
                        a = b;
                        System.out.print]n("扩容之后的长度为:'+a.length);

                        for(int i=0:i<a.length:i++){

                                       System.out.print(a[i]+" ");

                        }

        (2)第二种方式:借助工具类:java.util.Arrays.copyOf(数组名,新数组的长度);

以下是该函数的函数模板实现: ```c++ #include <iostream> using namespace std; // 函数模板:计算数组的最大值 template<typename T> T largest_element(T arr[], int n) { T max_val = arr[0]; for (int i = 1; i < n; i++) { if (arr[i] > max_val) { max_val = arr[i]; } } return max_val; } int main() { // 输入三个数组,分别为 int、double、char 类型 int n1, n2, n3; cin >> n1; int arr1[n1]; for (int i = 0; i < n1; i++) { cin >> arr1[i]; } cin >> n2; double arr2[n2]; for (int i = 0; i < n2; i++) { cin >> arr2[i]; } cin >> n3; char arr3[n3]; for (int i = 0; i < n3; i++) { cin >> arr3[i]; } // 计算三个数组的最大值并输出 cout << largest_element<int>(arr1, n1) << endl; cout << largest_element<double>(arr2, n2) << endl; cout << largest_element<char>(arr3, n3) << endl; return 0; } ``` 其中,函数模板 `largest_element()` 使用了模板类型 `T`,表示数组元素的类型。在函数模板中,我们使用 `T max_val = arr[0];` 将数组的第一个元素设为当前的最大值,然后遍历整个数组,如果遇到比当前最大值还要大的元素,就将其设为新的最大值。最终返回最大值即可。 在主函数中,我们先分别输入三个数组,然后调用 `largest_element()` 函数模板计算三个数组的最大值,分别输出即可。注意在调用函数模板时,需要显示指定模板类型,例如 `largest_element<int>(arr1, n1)` 表示使用 `int` 类型计算 `arr1` 数组的最大值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值