精华内容
下载资源
问答
  • C++ 二维数组参数传递的实现方法int a[2][2]={ {4, 6}, {9, 11} };我定义了这样一个数组,我想把这个数组作为参数,传递到一个函数中,并要在函数中能引用该二维数组的元素,我该怎么做?第一种方式是直接传递二维...

    C++ 二维数组参数传递的实现方法

    int a[2][2]={ {4, 6}, {9, 11} };

    我定义了这样一个数组,我想把这个数组作为参数,传递到一个函数中,并要在函数中能引用该二维数组的元素,我该怎么做?

    第一种方式是直接传递二维数组,但是必须标明第二维的值,因为如果只是传递a[][],编译器无法分配这样的数组,所以要这样传int a[][3]

    第二种方法是传递指针数组方式,即int (*a)[3]

    第三种是传递指针方法。

    具体实施见代码:

    方法1:传递数组,注意第二维必须标明

    //二维数组传参问题示例

    #include

    using namespace std;

    //方法1:传递数组,注意第二维必须标明

    void fun1(int arr[][3],int iRows)

    {

    for(int i=0;i

    {

    for(int j=0;j<3;j++)

    {

    cout<

    }

    cout<

    }

    cout<

    }

    方法二:一重指针

    void fun2(int (*arr)[3],int iRows)

    {

    for(int i=0;i

    {

    for(int j=0;j<3;j++)

    {

    cout<

    }

    cout<

    }

    cout<

    }

    方法三:指针传递,不管是几维数组都把他看成是指针,

    void fun3(int*arr,int iRows,int iCols)

    {

    for(int i=0;i

    {

    for(int j=0;j<3;j++)

    {

    cout<

    }

    cout<

    }

    cout<

    }

    int main()

    {

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

    fun1(a,2);

    cout<

    fun2(a,2);

    cout<

    //此处必须进行强制类型转换,因为a是二维数组,而需要传入的是指针

    //所以必须强制转换成指针,如果a是一维数组则不必进行强制类型转换

    //为什么一维数组不用强制转换而二维数组必须转换,此问题还没解决,期待大牛!

    fun3((int*)a,2,3);

    cout<

    }

    /*

    #include

    using namespace std;

    void fun(int *a,int length)

    {

    int i;

    for(i=0;i

    {

    cout<

    }

    cout<

    }

    int main()

    {

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

    fun(a,4);

    cout<

    return 0;

    }

    */

    如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持,大家共同进步!

    展开全文
  • 一维数组的值在方法内部可以修改,修改后的值退出方法就失效了吗? 二维数组在方法中被修改后退出方法值仍然有效吗? 经过测试以上两问均为yes,但未真正明确其中原因

    一维数组的值在方法内部可以修改,修改后的值退出方法就失效了吗?

    二维数组在方法中被修改后退出方法值仍然有效吗?


    经过测试以上两问均为yes,但未真正明确其中原因

    展开全文
  • 为了方便组织各种信息,计算机常将信息以表的形式进行组织,然后再以行和列的形式呈现出来。二维数组的结构决定了其能非常方便地表示计算机中的表,以第一个下标表示元素所在的行,第...Java 并不直接支持二维数组,...

    为了方便组织各种信息,计算机常将信息以表的形式进行组织,然后再以行和列的形式呈现出来。二维数组的结构决定了其能非常方便地表示计算机中的表,以第一个下标表示元素所在的行,第二个下标表示元素所在的列。下面简单了解一下二维数组,包括数组的声明和初始化。

    创建二维数组

    Java 中二维数组被看作数组的数组,即二维数组为一个特殊的一维数组,其每个元素又是一个一维数组。Java 并不直接支持二维数组,但是允许定义数组元素是一维数组的一维数组,以达到同样的效果。声明二维数组的语法如下:

    type array[][];
    type[][] array;

    其中,type 表示二维数组的类型,array 表示数组名称,第一个中括号表示行,第二个中括号表示列。

    下面分别声明 int 类型和 char 类型的数组,代码如下:

     
    1. int[][] age;
    2. char[][] sex;

    初始化二维数组

    二维数组可以初始化,和一维数组一样,可以通过3种方式来指定元素的初始值。这 3 种方式的语法如下:

    array=new type[][]{值 1,值 2,值 3,…,值 n};
    array=new type[][]{new 构造方法(参数列),…};
    type[][] array={{第1行第1列的值,第1行第2列的值,…},{第2行第1列的值,第2行第2列的值,…},…};

    例 1

    使用第一种方式声明 int 类型的二维数组,然后初始化该二维数组。代码如下:

     
    1. int[][] temp;
    2. temp=new int[][]
    3. {
    4. {1,2},{3,4}
    5. };


    上述代码创建了一个二行二列的二维数组 temp,并对数组中的元素进行了初始化。图 1 所示为该数组的内存结构。
     


    图1 二维数组内存结构


    使用第二种方式声明 int 类型的二维数组,然后初始化该二维数组。代码如下:

     
    1. int[][] temp;
    2. temp=new int [][]
    3. {
    4. {new int(1),new int(2)},{new int(3),new int(4)}
    5. };


    使用第三种方式声明 int 类型的二维数组,并且初始化数组。代码如下:

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

    获取单个元素

    在上节使用 3 种方式创建并初始化了一个二行二列的 int 类型数组 temp。当需要获取二维数组中元素的值时,也可以使用下标来表示。语法如下:

    array[i-1][j-1];


    其中,array 表示数组名称,i 表示数组的行数,j 表示数组的列数。例如,要获取第二行第二列元素的值,应该使用 temp[1][1]来表示。这是由于数组的下标起始值为 0,因此行和列的下标需要减 1。

    例 2

    通过下标获取 class_score 数组中第二行第二列元素的值与第四行第一列元素的值。代码如下:

     
    1. public static void main(String[] args)
    2. {
    3. double[][] class_score={{10.0,99,99},{100,98,97},{100,100,99.5},{99.5,99,98.5}};
    4. System.out.println("第二行第二列元素的值:"+class_score[1][1]);
    5. System.out.println("第四行第一列元素的值:"+class_score[3][0]);
    6. }


    执行上述代码,输出结果如下:

    第二行第二列元素的值:98.0
    第四行第一列元素的值:99.5

    获取全部元素

    在一维数组中直接使用数组的 length 属性获取数组元素的个数。而在二维数组中,直接使用 length 属性获取的是数组的行数,在指定的索引后加上 length(如 array[0].length)表示的是该行拥有多少个元素,即列数。

    如果要获取二维数组中的全部元素,最简单、最常用的办法就是使用 for 语句。

    例 3

    使用 for 循环语句遍历 double 类型的 class_score 数组的元素,并输出每一行每一列元素的值。代码如下:

     
    1. public static void main(String[] args)
    2. {
    3. double[][] class_score={{100,99,99},{100,98,97},{100,100,99.5},{99.5,99,98.5 }};
    4. for(int i=0;i<class_score.length;i++)
    5. { //遍历行
    6. for(int j=0;j<class_score[i].length;j++)
    7. {
    8. System.out.println("class_score["+i+"]["+j+"]="+class_score[i][j]);
    9. }
    10. }
    11. }


    上述代码使用嵌套 for 循环语句输出二维数组。在输出二维数组时,第一个 for 循环语句表示以行进行循环,第二个 for 循环语句表示以列进行循环,这样就实现了获取二维数组中每个元素的值的功能。

    执行上述代码,输出结果如下所示。

    class_score[0][0]=100.0
    class_score[0][1]=99.0
    class_score[0][2]=99.0
    class_score[1][0]=100.0
    class_score[1][1]=98.0
    class_score[1][2]=97.0
    class_score[2][0]=100.0
    class_score[2][1]=100.0
    class_score[2][2]=99.5
    class_score[3][0]=99.5
    class_score[3][1]=99.0
    class_score[3][2]=98.5

    例 4

    假设有一个矩阵为 5 行 5 列,该矩阵是由程序随机产生的 10 以内数字排列而成。下面使用二维数组来创建该矩阵,代码如下:

     
    1. public class Test11
    2. {
    3. public static void main(String[] args)
    4. {
    5. //创建一个二维矩阵
    6. int[][] matrix=new int[5][5];
    7. //随机分配值
    8. for(int i=0;i<matrix.length;i++)
    9. {
    10. for(int j=0;j<matrix[i].length;j++)
    11. {
    12. matrix[i][j]=(int)(Math.random()*10);
    13. }
    14. }
    15. System.out.println("下面是程序生成的矩阵\n");
    16. //遍历二维矩阵并输出
    17. for(int k=0;k<matrix.length;k++)
    18. {
    19. for(int g=0;g<matrix[k].length;g++)
    20. {
    21. System.out.print(matrix[k][g]+"");
    22. }
    23. System.out.println();
    24. }
    25. }
    26. }


    在该程序中,首先定义了一个二维数组,然后使用两个嵌套的 for 循环向二维数组中的每个元素赋值。其中,Math.random() 方法返回的是一个 double 类型的数值,数值为 0.6、0.9 等,因此乘以 10 之后为 10 以内的整数。最后又使用了两个嵌套的 for 循环遍历二维数组,输出二维数组中的值,从而产生矩阵。

    运行该程序的结果如下所示。

    34565
    96033
    48741
    10583
    63985

    获取整行元素

    除了获取单个元素和全部元素之外,还可以单独获取二维数组的某一行中所有元素的值,或者二维数组中某一列元素的值。获取指定行的元素时,需要将行数固定,然后只遍历该行中的全部列即可。

    例 5

    编写一个案例,接收用户在控制台输入的行数,然后获取该行中所有元素的值。代码如下:

     
    1. public static void main(String[] args)
    2. {
    3. double[][] class_score={{100,99,99},{100,98,97},{100,100,99.5},{99.5,99,98.5}};
    4. Scanner scan=new Scanner(System.in);
    5. System.out.println("当前数组只有"+class_score.length+"行,您想查看第几行的元素?请输入:");
    6. int number=scan.nextInt();
    7. for(int j=0;j<class_score[number-1].length;j++)
    8. {
    9. System.out.println("第"+number+"行的第["+j+"]个元素的值是:"+class_score[number-1][j]);
    10. }
    11. }


    执行上述代码进行测试,输出结果如下所示。

    当前数组只有4行,您想查看第几行的元素?请输入:
    3
    第3行的第[0]个元素的值是:100.0
    第3行的第[1]个元素的值是:100.0
    第3行的第[2]个元素的值是:99.5

    获取整列元素

    获取指定列的元素与获取指定行的元素相似,保持列不变,遍历每一行的该列即可。

    例 6

    编写一个案例,接收用户在控制台中输入的列数,然后获取二维数组中所有行中该列的值。代码如下:

     
    1. public static void main(String[] args)
    2. {
    3. double[][] class_score={{100,99,99},{100,98,97},{100,100,99.5},{99.5,99,98.5}};
    4. Scanner scan=new Scanner(System.in);
    5. System.out.println("您要获取哪一列的值?请输入:");
    6. int number=scan.nextInt();
    7. for(int i=0;i<class_score.length;i++)
    8. {
    9. System.out.println("第 "+(i+1)+" 行的第["+number+"]个元素的值是"+class_score[i][number]);
    10. }
    11. }


    执行上述代码进行测试,如下所示。

    您要获取哪一列的值?请输入:
    2
    第 1 行的第[2]个元素的值是99.0
    第 2 行的第[2]个元素的值是97.0
    第 3 行的第[2]个元素的值是99.5
    第 4 行的第[2]个元素的值是98.5
    展开全文
  • 数组作为函数的参数 数组可以作为参数传递给方法。 public class Demo03 { public static void main(String[] args) { test01(new int[]{1,4,5,8,33}); } /** * @param array 数组作为参数 */ public ...

    数组作为函数的参数

    数组可以作为参数传递给方法。

    public class Demo03 {
        public static void main(String[] args) {
            test01(new int[]{1,4,5,8,33});
    
        }
    
    
        /**
         * @param array 数组作为参数
         */
        public static void test01(int[] array){
            for (int i = 0; i < array.length; i++) {
                System.out.print(array[i]+" ");
    
            }
        }
    
      
    

    多维数组

    多维数组可以看做是数组的数组,比如二维数组就是个特殊的一维数组,其中每个元素是一个一维数组;

    定义二维数组

    int a[][] = new int[2][3];
    

    以上数组可以看做是两行三列的数组;

    遍历二维数组:

    案例:

     public static void main(String[] args) {
            int[][] arr = {{11,22},{33,44},{55,66}};
            System.out.println(arr[0][1]);
    
            for(int i =0;i<arr.length; i++){
                for (int j = 0;j<arr[i].length;j++){
                     System.out.println(arr[i][j]);
                }
    
        }
    
    
        }
    
    展开全文
  • Java二维数组

    千次阅读 2019-05-08 19:39:04
    Java 中二维数组被看作数组的数组,即二维数组为一个特殊的一维数组,其每个元素又是一个一维数组。Java 并不直接支持二维数组,但是允许定义数组元素是一维数组的一维数组,以达到同样的效果。声明二维数组的...
  • java维数组   声明方法 方法一:int[] array = new int[5] 方法:int[] array = new int[] {1,2,3,4,5};(new int[]可以省略)   参数传递 public void fu(int[] a){};//接受a数组 int[] a=new int[]...
  • 我定义了这样一个数组,我想把这个数组作为参数,传递到一个函数中,并要在函数中能引用该二维数组的元素,我该怎么做?   第一种方式是直接传递二维数组,但是必须标明第二维的值,因为如果只是传递a[][],...
  • Java二维数组参数传值

    千次阅读 2014-06-09 20:49:01
    java
  • java二维数组

    2021-04-16 12:25:49
    二维数组其实就是数组中的数组什么是数组中的数组,首先一维数组开辟了3格,但是3格在往下延伸了3格,就是我们的数组里面存储的并不是值,而是下一个数组的地址,等于就是数组中的数组,这就是二维数组的形式。...
  • 二维数组作为参数,传入函数(最好用的) 很多时候我都是直接通过传入一个 固定的数字来传递一个二维数组, 比如这样子定义函数 int fun(int a[][3],int n) 调用函数是 fun(a,n); 这样子调用的二维数组只能是固定...
  • C++二维数组作为参数问题

    千次阅读 2015-12-01 16:06:09
    使用C++写程序也写了这么长时间了,发现距离掌握这门语言依然非常遥远,经常被一些细节问题问倒,前几天被一大牛问到c++里面怎么向一个函数传递二维数组,脑子中的第一反应是:f(int a[][])(因为比较早这前做过很短...
  • 新手小白学JAVA 数组 数组工具类 二维数组

    万次阅读 多人点赞 2021-04-02 08:28:55
    1 数组 1.1 概念 数组Array,标志是[ ] ,用于储存多个相同类型数据的集合 想要获取数组中的元素值,可以通过脚标(下标)来获取 数组下标是从0开始的,下标的最大值是数组的长度减1 1.2 创建数组 数组的创建方式一般...
  • java之数组:二维数组

    2021-02-10 21:53:15
    文章目录二维数组二维数组静态初始化二维数组的length属性二维数组的元素访问 二维数组 二维数组其实是一个特殊的一维数组,特殊在这个一维数组当中的每一个元素都是一个一维数组 二维数组静态初始化 int[][] array ...
  • 如果我们要编写一个函数对这个数组进行处理,我们应该怎样声明函数的形参,又怎样在调用函数时引入二维数组这个参数呢? 首先我们来看对一维数组是怎么做的 void main() { int vec[n]; fun1(vec); } 对...
  • Java数组1.数组的概述容器的概念2.数组的定义格式方式一方式二方式三3.数组元素的默认值4.什么是数组初始化5....二维数组二维数组概述二维数组定义格式方式一方式二方式三二维数组内存图二维数组...
  • 一,二维数组 1,概述 二维数组实际上是一个元素是一维数组的数组。(烟) 一包烟好比是一维数组,一条烟就好比是二维数组了。 2,二维数组的定义格式 格式一:数据类型[][] 数组名 = new 数据类型[x][y]; x表示...
  • java 二维数组

    万次阅读 2014-03-05 16:39:37
    public class Lesson{  public ... //二维数组的声明方式:  //数据类型 [][] 数组名称 = new 数据类型 [长度][长度] ;  //数据类型 [][] 数组名称 = {{123},{456}} ;      int [][] num = new
  • JAVA二维数组打印唐诗 你好WO SHI 七七卡卡 ^ _ ^ 二维数组的应用----打印唐诗(横版,竖版 春晓) 我们上次讨论了如何用javascrip创建二维数组,这次我们用java 二维数组解决一个小问题打印唐诗(横版,竖版 ...
  • 二维数组作为函数参数的传递

    千次阅读 2018-05-13 10:38:41
    自己试着摸索的,会尝试int**做形参,没学过很难知道问题所在 ...首先有以下几种办法传递二维数组地址 void f(int a[10][10])//直接用相同的数组做形参 void f(int a[][10])//可以省略第一维,但第二维不能省 vo...
  • 二维数组 二维数组概述 可以理解成数组嵌套数组;如班级里64个人,8个人组成一个一维数组,同时一维数组又可以组成一个二维数组二维数组就是一个班。 二维数组格式 数据类型[][] 变量名 = new 数据类型[m][n...
  • Java-二维数组

    千次阅读 2019-04-25 17:45:15
    二维数组(理解) (1)元素是一维数组的数组。 (2)格式: A:数据类型[][] 数组名 = new 数据类型[m][n]; m:表示这个二维数组有多少个一维数组。 n:表示每一个一维数组的元素有多少个。 B:数据类型[][] 数组名 = new...
  • 维数组保存一组数据类型相同的数据声明一个数组: 数据类型[ ] 数组名 = 初值注意: 这里的数据类型指的是数组中保存数据的类型声明方式一: int array = new int[数组的长度];注意: 数组的长度一旦确定 就不能...
  • 声明:  如果你是得道的大侠,这篇文章可能... 今天写程序的时候要用到二维数组参数传给一个函数,我发现将二维数组参数进行 传递还不是想象得那么简单里,但是最后我也解决了遇到的问题,所以这篇文章主
  • Java中二维数组的动态初始化

    千次阅读 2020-07-11 17:50:27
    java中二维数组的动态初始化: 使用new关键字实例化,不是直接等于{{“hello”, “world”}, {“I”, “am”, “coming... //先看看二维数组作为参数时应该怎么写 //静态初始化一个二维数组 String[][] strArray = {
  • 习题6.14 以m行n列二维数组参数进行方法调用,分别计算二维数组各列元素之和,返回并输出所计算的结果。 代码块: package App; import java.util.*; class Array { int m, n; Scanner reader=new Scanner...
  • 一、二维数组 (一)二维数组概述 二维数组其实就是每一个元素为一维数组的数组。 (二)二维数组初始化格式 1.动态初始化 1.1 二维数组格式1 数据类型[][] 变量名 = new 数据类型[m][n]; m表示这个二维数组有多少个...
  • 维数组维数组的定义方式 一维数组有以下两种定义方式,推荐使用第一种定义方式 &amp;amp;amp;amp;amp;amp;lt;数据类型&amp;amp;amp;amp;amp;amp;gt;[] &amp;amp;amp;amp;amp;amp;lt;数组名称&...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 46,673
精华内容 18,669
关键字:

java二维数组作为参数

java 订阅