精华内容
下载资源
问答
  • 关于二维数组初始化正确的是
    千次阅读
    2019-07-30 17:16:10

    有些知识觉得很简单,但其中一些细节性的东西我们未必知道,比如说数组的定义以及初始化的方式。下面主要介绍下二位数组初始化的三种方式

    1、定义数组的同时使用大括号直接赋值,适合数组元素已知的情况

    2、定义二维数组的大小,然后分别赋值

    3、数组第二维的长度可变化

            //第一种方式:定义的同时大括号直接复制
            int[][] array1={{1,3,1},{1,5,1},{4,2,1}};
            //第二种方式:先定义数组大小,然后分别赋值
            int[]array2[]=new int[3][3];//定义数组维度(数组定义时两个中括号可以分开,你知道吗?)
            for(int i=0;i<array2.length;i++){
                for (int j = 0; j <array2[0].length ; j++) {
                    array2[i][j]=i+j;//分别赋值
                }
            }
            //第三种方式:第二维的长度可以动态申请
            int[][] arr3 = new int[5][];//五行的长度
            for(int i=0; i<arr3.length; ++i){
                arr3[i]=new int[i+1];   //列的长度每次都变化。每次都要重新申请空间(长度)
                for(int j=0; j<arr3[i].length; ++j)
                    arr3[i][j]= i+j;
            }

     

    更多相关内容
  • 正确初始化: a = [[0 for _ in range(n)] for _ in range(n)] 错误的初始化: a = [0 * n] * n 这会导致 a[0][1] = 1 print(a[1][1]) 输出:1 也就是说第一行和第行是一样的a[0][1]和a[1][1]指向的是同一个id...

    正确初始化:

    a = [[0 for _ in range(n)] for _ in range(n)]
    

    错误的初始化:

    a = [0 * n] * n
    

    这会导致

    a[0][1] = 1
    print(a[1][1])
    输出:1
    

    也就是说第一行和第二行是一样的a[0][1]a[1][1]指向的是同一个id,因为复制的时候,其他行都是第一行的快捷方式,你找第二行就等于找第一行。

    a = [[0] * 2] * 2
    print (id(a[0]))
    print (id(a[1]))
    输出:
    139872120628928
    139872120628928
    

    嘶,可是为什么一维的时候不会发生这样的事啊?
    因为解释器在你改变值的时候给你偷偷换了id:

    a = [0] * 2
    print(id(a[0]))
    print(id(a[1]))
    a[0] = 1
    print(a[0])
    print(a[1])
    print(id(a[0]))
    print(id(a[1]))
    输出:
    140576878282432
    140576878282432
    0
    140576878282464
    140576878282432
    

    在回过来看第一种初始化:

    n = 2
    a = [[0 for _ in range(n)] for _ in range(n)]
    print(id(a[0][0]))
    print(id(a[0][1]))
    print(id(a[1][0]))
    print(id(a[1][1]))
    输出:
    139828550207168
    139828550207168
    139828550207168
    139828550207168
    

    啊,原来一开始的时候大伙都是一样的,当有一个不一样的时候就变出去

    n = 2
    a = [[0 for _ in range(n)] for _ in range(n)]
    a[0][0] = 1
    print(id(a[0][0]))
    print(id(a[0][1]))
    print(id(a[1][0]))
    print(id(a[1][1]))
    输出:
    139828550207200
    139828550207168
    139828550207168
    139828550207168
    

    总结

    第一种正确初始化方式:n * n个元素直接从第一个元素生成而来,一开始的时候大伙都是第一个元素的快捷方式,找任意行任意列的元素都会找到第一个元素。当其他元素有了自己的值以后,就变成独立的元素啦。
    第二种初始化方式:先由一个元素生成一行,再以这一行生成其他行。所以,即使其他行的某个元素改变了,其实也只是在改变第一行的元素。

    展开全文
  • 二维数组初始化

    2021-07-29 20:24:02
    二维数组 1.含义 包含了多个一维数组 2.声明 数据类型[][] 数组名; 3.数组的初始化 ​ 静态初始化:数据由程序员指定,长度由系统自动分配 ​ 动态初始化:长度由程序员指定,数据由系统赋默认值 ​ ...

    二维数组

    1.含义

    包含了多个一维数组

    2.声明

    数据类型[][] 数组名;

    3.数组的初始化

    ​ 静态初始化:数据由程序员指定,长度由系统自动分配
    ​ 动态初始化:长度由程序员指定,数据由系统赋默认值

    ​ 整数类型:0
    * 浮点类型:0.0
    * 字符类型:’ ’
    * 布尔类型:false
    * 引用类型:null

    //静态初始化1
    		//String[][] names = new String[][]{{"深田咏美","爱田奈奈","京香julia"},{"明日花绮罗","小峰由衣","泽村丽子","小泽玛利亚"}};
    		
    		//静态初始化2
    		//String[][] names;
    		//names = new String[][]{{"深田咏美","爱田奈奈","京香julia"},{"明日花绮罗","小峰由衣","泽村丽子","小泽玛利亚"}};
    				
    		//静态初始化3
    		String[][] names = {{"深田咏美","爱田奈奈","京香julia"},{"明日花绮罗","小峰由衣","泽村丽子","小泽玛利亚"}};
    				
    		
    		//设置指定下标上的元素
    		names[0][2] = "林成";
    		
    		//获取指定下标上的元素
    		String name = names[0][2];
    		System.out.println("获取指定下标上的元素:" + name);
    		
    		//获取长度
    		System.out.println("获取二维数组中一维数组的个数:" + names.length);//2
    		System.out.println("获取二维数组中第一个一维数组的元素个数:" + names[0].length);//3
    		System.out.println("获取二维数组中第二个一维数组的元素个数:" + names[1].length);//4
    		
    		System.out.println("------------");
    		
    		//遍历 - for循环
    		for (int i = 0; i < names.length; i++) {
    			for (int j = 0; j < names[i].length; j++) {
    				System.out.println(names[i][j]);
    			}
    		}
    		
    		System.out.println("------------");
    		
    		//遍历 - foreach
    		for (String[] strings : names) {
    			for (String string : strings) {
    				System.out.println(string);
    			}
    		}
    	}
    
    		//动态初始化1
    		//String[][] names = new String[2][3];//2个一维数组,每个一维数组中有3个元素
    		
    		//动态初始化2
    		String[][] names;
    		names = new String[2][3];//2个一维数组,每个一维数组中有3个元素
    		
    		//设置指定下标上的元素
    		names[0][0] = "林成a";
    		names[0][1] = "林成b";
    		names[0][2] = "林成c";
    		names[1][0] = "林成d";
    		names[1][1] = "林成e";
    		names[1][2] = "林成f";
    		
    		//获取指定下标上的元素
    		String name = names[0][2];
    		System.out.println("获取指定下标上的元素:" + name);
    		
    		//获取长度
    		System.out.println("获取二维数组中一维数组的个数:" + names.length);//2
    		System.out.println("获取二维数组中第一个一维数组的元素个数:" + names[0].length);//3
    		System.out.println("获取二维数组中第二个一维数组的元素个数:" + names[1].length);//4
    		
    		System.out.println("------------");
    		
    		//遍历 - for循环
    		for (int i = 0; i < names.length; i++) {
    			for (int j = 0; j < names[i].length; j++) {
    				System.out.println(names[i][j]);
    			}
    		}
    		
    		System.out.println("------------");
    		
    		//遍历 - foreach
    		for (String[] strings : names) {
    			for (String string : strings) {
    				System.out.println(string);
    			}
    		}
    	}
    

    4.二维数组的动态初始化

    1 需求

    使用动态初始化二维数组,其中第一个一维数组有3个元素,第二个一维数组有4个元素

    		//动态初始化:标注二维数组中有2个一维数组
    		String[][] names = new String[2][];
    		
    		//把长度为3的一维数组赋值给二维数组中下标为0的位置
    		names[0] = new String[3];
    		//把长度为4的一维数组赋值给二维数组中下标为1的位置
    		names[1] = new String[4];
    		
    		System.out.println("获取二维数组中一维数组的个数:" + names.length);//2
    		System.out.println("获取二维数组中第一个一维数组的元素个数:" + names[0].length);//3
    		System.out.println("获取二维数组中第二个一维数组的元素个数:" + names[1].length);//4		
    		
    	}
    
    展开全文
  • C语言的二维数组初始化的几种方式介绍1、直接赋值2、循环对每个元素赋值3、借用memset/memset_s初始化为0或-14、`数组所有元素初始化为相同值` 1、直接赋值 适合数组元素较少的,各元素的值可以不同。 int[2][3] arr...

    1、直接赋值

    适合数组元素较少的,各元素的值可以不同。

    int arr1[2][3] = { {5, 2, 4}, {10, 2, 1} };
    int arr1[2][3] = {0}; /* 所有元素都初始化为0 */
    int arr1[2][3] = {1}; /* 只有arr1[0][0]为1,其他所有元素都初始化为0 */
    

    2、循环对每个元素赋值

    对数组的每个元素进行赋值,各元素的值可以不同。就是效率比较低。

    int arr2[2][3];
    int i, j;
    for (i = 0; i < 2; i++) {
        for (j = 0; j < 3; j++) {
            arr2[i][j] = 2; /* 本例为了简单都赋值成相同值 */
        }
    }
    

    3、借用memset/memset_s初始化为0或-1

    注意:memset/memset_s只能将变量初始化为 0或-1,其他值不成立。 参考百度百科 的常见错误的第一条。
    这点很多人都没注意,容易犯错。

    int arr3[10][10];
    memset(arr3, 0, sizeof(arr3); /* 正常,arr3中的每个元素都为0 */
    memset(arr3, -1, sizeof(arr3); /* 正常,arr3中的每个元素都为-1 */
    memset(arr3, 2, sizeof(arr3); /* 异常,arr3中的每个元素都为异常值33686018 */
    

    在这里插入图片描述

    4、数组所有元素初始化为相同值(用于大数组初始化贼方便)

    只要值为相同的,特别是数组元素比较多的情况,推荐用此方法:
    { [0 … LENA-1][0 … LENB-1] = num };
    这种初始化方法比较少见,但特别省事,所以共享给大家。

    #define ARR_LEN 100
    int arr4[ARR_LEN][ARR_LEN] = { [0 ... (ARR_LEN-1)][0 ... (ARR_LEN-1)] = 10 }; /* 100*100个元素都初始化为10 */
    

    在这里插入图片描述

    展开全文
  • python二维数组初始化

    2020-07-23 15:31:41
    刚刚想生成一个二维数组,于是就在代码里这么写了: myList = [[0] * 3] * 4] # [[0,0,0], [0,0,0], [0,0,0], [0,0,0]] 但是当我修改第一个值myList[0][0]的时候,后面的myList[1][0]、myList[2][0]、myList[3][0]...
  • 二维数组初始化

    万次阅读 2019-09-26 10:32:19
    (1)二维数组初始化 int a[ ][4]={1,2,3,4,5,6,7,8,9,10,11,12} ; int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12} ; int a[3][4]={ {1,2,3},{4,5,6},{7,8,9},{10,11,12} } ; 这三者赋值方式等价; 这个赋值方法是...
  • 文章目录 一维数组与二维数组的声明 一维数组的声明: 二维数组的声明: 总结 数组的初始化 静态初始化 动态初始化 默认初始化 一维数组与二维数组的声明 一维数组的声明: int[] a; //只声明数组a,没有初始化 int...
  • 数组初始化方式总共有三种:静态初始化、动态初始化、默认初始化。 【1】静态初始化 除了用new关键字来产生数组以外,还可以直接在定义数组的同时就为数组元素分配空间并赋值。 eg: int[][] arr = {{1,2},{4,5,6},...
  • 二维数组正确初始化规则

    万次阅读 多人点赞 2019-03-19 20:30:50
    最近刷题总在二维数组初始化这里栽跟头,接下来总结一点二维数组的初始化规则以便记忆 这里提一句一维数字代表行,二维数字代表列 arr[2][3]就是创建两行三列的数组 二维数组在初始化的时候可以分行进行初始化 int...
  • 前端vue二维数组解析

    2018-09-12 11:06:01
    通过vue解析表头合并的表格,后台返回的数据格式为[{name:aa,list:[{value:100}]}] 通过table与v-for组合循环数据达到目的。 vue 表头合并数据解析 vue 二维数组解析 vue 二维list解析 vue table+v-for
  • Java | 二维数组初始化

    千次阅读 2021-10-07 15:22:29
    //初始化二维数组, int[][] a = new int[2][3]; //有两个一维数组,每个一维数组的长度是3 a[1][2] = 5; //可以直接访问一维数组,因为已经分配了空间 //只分配了二维数组 int[][] b = new in
  • 二维数组的创建和初始化

    千次阅读 2022-04-27 09:20:35
    一、二维数组的创建 //数组创建 int arr[3][4]; char arr[3][5]; double arr[2][4]; #include<...//二维数组的创建 ...二、二维数组初始化 完全初始化: 不完全初始化二维数组
  • C语言中二维数组初始化和作为形参的设定细节
  • Python正确初始化二维数组

    千次阅读 2020-10-10 11:03:34
    Python中初始化一个5 x 3每项为0的数组,最好方法是: multilist=[[0forcolinrange(5)]forrowinrange(3)] 我们知道,为了初始化一个...没错,那我们初始化一个二维数组时,是否可以这样做呢: multi=[[0]*5]*...
  • 二维数组 数组,就是多个同类型的元素的有序“组合”。如下的一组女兵,(注:同类型是指都是女兵, 不能混入男兵) 二维数组,就是指含有多个数组的数组! 如果把一维数组理解为一行数据,那么,二维数组可形象...
  • c语言二维数组初始化的方式

    万次阅读 2017-05-17 23:02:28
    #include #include int main() { int **arr; int m=3,n=4,i,j; arr = (int **)malloc(sizeof(int*)*m); for(i=0; i; i++) arr[i] = (int *)malloc(sizeof(int)*n);
  • //正确的C#二维数组使用方法 classes[i, 0] = ; //错误的使用方法 classes[i][0]=; 据说这种形式的C#二维数组叫做锯齿数组, 一段例子以供参考: // 声明一个锯齿型数组,该数组有两个元素 int[][] myArray = new ...
  • 二维数组初始化的形式有?

    千次阅读 2017-07-14 16:30:51
    二维数组初始化的形式有?
  • 9.6.1 二维数组的定义和初始化每个一维数组都是有数据类型的。例如,整型一维数组,那么数组中每一个元素都是整型;浮点型一维数组,那么数组中每一个元素都是浮点型;或者字符型一维数组,那么数组中每一个元素都是...
  • //定义一个二维数组 int **aaa =NULL;//这里必须要定义初始值NULL,否则提示C4700的错误,“使用了未初始化的局部变量aaa” for (int i = 0; i < 10; i++) test_int[i] = new int[9]; 编译可以顺利通过,但是...
  • 初始化len x len的数组 并赋值为1 方法一: let aArray=new Array(len) for(let i=0;i<len;i++){ aArray[i]=new Array(len).fill(1) } 方法: let aArray = Array.from(new Array(len),(value,index) => ...
  • Python在初始化二维数组的时候还是有一些坑的,主要是要避免可变元素的传递改变问题: array = [0, 0, 0] matrix = [array] * 3 matrix[0][0] = 1 print(matrix) ...那么如何正确初始化一个二维数组
  • 【代码】Java基础动态初始化二维数组
  • 一维/二维数组的几种初始化方法

    千次阅读 2020-08-03 20:54:18
    维数组初始化方法 方式一:静态初始化 数据类型[] 数组名 = {元素1,元素2,元素3...};//必须在一个语句中完成,不能分开两个语句写 举例: 定义存储1,2,3,4,5整数的数组容器 int[] arr = {1,2,3,...
  • 二维数组的使用(包括二维数组的定义,二维数组的声明和初始化(动态初始化,静态初始化),二位数组的常见赋值方法(动态初始化,静态初始化的赋值),错误的定义赋值方法等) 详解均在代码注释里,非常详细,细心...
  • 我们知道,一位数组的简单初始化如下:arr = [0] * 10 # 即[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]这样可以得到一个长度为10的数组。那么二维情况下,能不能这么做呢?比如 arr2D = [[0] * 10 ] * 4 能按预期得到一个正常的...
  • 二维数组的定义与初始化

    千次阅读 2020-03-30 17:11:41
    #include <iostream> #include <Windows.h> ... //二维数组的定义 //和数组一样 需要先定义再使用 int a1[5]; //一行女兵 //实例: int a2[3][3]; //三行女兵 //定义了一个二...
  • [C]二维数组初始化规则

    万次阅读 多人点赞 2018-10-04 23:12:20
    二维数组初始化形式如下: int/char arr [100][200]  数据类型 数组名 [整常量表达式][整常量表达式] = {初始化数据}; 在{}中给出各组元素的初值,各初值之间用逗号分开。把{}中的初值依次赋给各数组元素。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 52,695
精华内容 21,078
热门标签
关键字:

关于二维数组初始化正确的是