精华内容
下载资源
问答
  • 实验2.2 数组引用与元素 一、实验目的 本实验的目的是让学生掌握数组属于引用型的一种复合弄数据类型。 二、实验要求 编写一个简单的Java应用程序,该程序在命令行窗口输出数组引用以及元素的值。 三、...

    实验2.2 数组的引用与元素

    一、实验目的

    本实验的目的是让学生掌握数组属于引用型的一种复合弄数据类型。

    二、实验要求

    编写一个简单的Java应用程序,该程序在命令行窗口输出数组的引用以及元素的值。

    三、程序效果示例

    程序运行效果如图2.2所示。

                                                     图2.2 输出数组的引用和元素的值

    四、程序模板

    请按模板要求,将【代码】替换为Java程序代码。

    【InputArray.java】

    public class InputArray {
    	public static void main(String args[]) {
    		int[] a = {100, 200, 300};
    		【代码1】	//输出数组a的长度
    		【代码2】	//输出数组a的引用
    
    		int b[][] = {{1}, {1,1}, {1,2,1}, {1,3,3,1}, {1,4,6,4,1}};
    		【代码3】	//输出二维数组b的一维数组的个数
    		System.out.println(b[4][2]);
    		【代码4】	//将数组a的引用赋给b[4];
    		System.out.println(b[4][2]);
    	}
    }
    

    实验代码:

    public class InputArray {
        public static void main(String args[]) {
            int[] a = {100, 200, 300};
          //输出数组a的长度
            System.out.println("数组a的长度="+a.length);
          //输出数组a的引用
            System.out.println("数组a的位置="+a);
            int b[][] = {{1}, {1,1}, {1,2,1}, {1,3,3,1}, {1,4,6,4,1}};
          //输出二维数组b的一维数组的个数
            System.out.println(b[0].length);
            System.out.println(b[4][2]);
          //将数组a的引用赋给b[4];
            b[4]=a;
            System.out.println(b[4][2]);
        }
    }
    

    实验结果:

    数组a的长度=3

    数组a的位置=[I@1b6d3586

    1

    6

    300

    五、实验后的练习

    (1)在程序的【代码4】之后增加语句“a[3]=200;”,编译是否有错?运行是否有错?

    有错。因为超出了定义的数组长度。

    提示错误为:Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3

            at OS.InputArray.main(InputArray.java:16)

    (2)在程序的【代码4】之前输出二维数组b的各个一维数组的长度和引用。

    for(int i=0;i<b.length;i++){
    
        System.out.println(b[i].length);
    
        System.out.println(b[i]);
    
    }

    1

    [I@4554617c

    2

    [I@74a14482

    3

    [I@1540e19d

    4

    [I@677327b6

    5

    [I@14ae5a5

    (3) 在程序的【代码4】之后输出二维数组b的各个一维数组的长度和引用。

    for(int j=0;j<b.length;j++){
    
        System.out.println(b[j].length);
    
        System.out.println(b[j]);
    
    }

    1

    [I@4554617c

    2

    [I@74a14482

    3

    [I@1540e19d

    4

    [I@677327b6

    3

    [I@1b6d3586

    展开全文
  • 介绍了PHP中删除数组中特定元素的两种方法,有需要的朋友可以参考一下
  • 引用数组元素

    千次阅读 2019-04-24 17:15:47
    引用一个数组元素可以有以下两种方法: (1)指针法。有 *(a+i), *(p+i) 两种表现形式,都是用间接访问的方法来引用数组元素。 (2)下标法。有a[i] 和 p[i] 两种形式。在编译时这两种形式也要处理成 *(a+i) 或 *(p+...

    引用一个数组元素可以有以下两种方法:
    (1)指针法。有 *(a+i), *(p+i) 两种表现形式,都是用间接访问的方法来引用数组元素。
    (2)下标法。有a[i] 和 p[i] 两种形式。在编译时这两种形式也要处理成 *(a+i) 或 *(p+i)
    ,即先按“a+i x(一个元素占用字节数)”计算出第 i 号元素的地址,然后通过指针运算
    符 “ * ” 来引用该元素。
    下面举个例子看一下这两种用法:

    #include <stdio.h>
    int main()
    {
        int a[10],i,*p;
        for(i=0;i<10;i++)
            scanf("%d",&a[i]);
        for(i=0;i<10;i++)
            printf("%d ",*(a+i));	/*形式1:指针法之*(a+i)形式*/
        printf("\n");
        for(p=a;p<(a+10);p++)
            printf("%d ",*p);		/*形式2:指针法之*p形式*/
        printf("\n");
        for(i=0;i<10;i++)
            printf("%d ",a[i]);		/*形式3:下标法之a[i]形式*/
        printf("\n");
        for(p=a,i=0;i<10;i++)
            printf("%d ",p[i]);		/*形式4:下标法之p[i]形式*/
        printf("\n");
        return 0;
    }
    

    程序运行结果如下:
    1 2 3 4 5 6 7 8 9 10 ,然后按 enter 键得到
    1 2 3 4 5 6 7 8 9 10
    1 2 3 4 5 6 7 8 9 10
    1 2 3 4 5 6 7 8 9 10
    1 2 3 4 5 6 7 8 9 10
    上述形式 1 和形式 3 的执行效率是相同的,都要按 a+i 计算地址,然后找出该单元中的值。
    由于 p++ 这样的自增操作无须每次都重新计算地址,所以形式 2 最快。但其中的 *p 究竟
    是哪个元素,不易看出,而下表法更直观些。

    展开全文
  • Matlab中数组元素引用——三种方法

    万次阅读 2018-07-19 12:44:25
    1.Matlab中数组元素引用有三种方法 1.下标法(subscripts)2.索引法(index)3.布尔法(Boolean) 注意:在使用这三种方法之前,大家头脑一定要清晰
    原文地址为:
    Matlab中数组元素引用——三种方法
    

    1.Matlab数组元素引用有三种方法

    1.下标法(subscripts)
    2.索引法(index)
    3.布尔法(Boolean)

     

    注意:在使用这三种方法之前,大家头脑一定要清晰的记住,Matlab中数组元素是按列存储(与Fortran一样),比如说下面的二维数组

    A=
    8 1 6
    3 5 7
    4 9 2

    Matlab的存储顺序是8,3,4,1,5,9,6,7,2,也就是说先行后列,对于3维数组呢,就是先行后列再页对应个元素的索引和下标分别为

    Element Index Subscripts
    8 1 (1,1)
    3 2 (2,1)
    4 3 (3,1)
    1 4 (1,2)
    5 5 (2,2)
    9 6 (3,2)
    6 7 (1,3)
    7 8 (2,3)
    2 9 (3,3)

      从上面的例子中已经很清晰的说明了下标和索引的区别了,也就是说Matlab为每个元素分配了一个唯一识别的ID(即index)


    2.下标法引用

    A(ii,jj):其中ii和jj可以是一维向量、标量、“:”号或者“end”

    大家对下标估计比较熟悉,由于在C语言中接触过,但是我这里需要强调的是,Matlab的下标是可以多行多列同时引用的,而像C语言等一次只能引用一个,比如

    A(2:3,3:-1:1)表示引用数组中的2~3行,3~1列对应的元素
    A(:,end)表示引用最后一列元素,“:”表示所有列或行,“end”表示最后一列或列,“end-n”表示倒数第n行或列
    A(1,end-1)表示引用第1行倒数第2个元素
    A([2 1 3 3],[1 1 2 2 1])表示引用按两个向量引用指定的元素,即A中的第2,1,3,3行和第1,1,2,2,1列对应的元素

    举几个例子:

    >>A=magic(3)

    A =
    8 1 6
    3 5 7
    4 9 2

    >>A(2:3,3:-1:1)

    ans =
    7 5 3
    2 9 4

    >>A(:,end)

    ans =
    6
    7
    2

    >>A(1,end-1)

    ans =
    1

    >>A([2 1 3 3],[1 1 2 2 1])

    ans =
    3 3 5 5 3
    8 8 1 1 8
    4 4 9 9 4
    4 4 9 9 4

     

    2.索引法引用(说白了索引就是存储顺序)

    A(index):index可以是任意的数组,index的元素必须是正整数,且不大于numel(A),返回的是一个尺寸与index一样的数组

    下标和索引之间可以通过ind2sub和sub2ind函数相互转换,具体可以看帮助,很简单

    [I,J] = ind2sub(siz,IND)
    IND = sub2ind(siz,I,J)

    还有使用A(:)就可以将数组A转换为列向量

    A(8):表示引用A的第8个元素
    B=A([1 10 5 2 2 1 3]):表示依次引用A的第1,10,5,2,2,1,3个元素,返回与index尺寸相同的数组,也就是说size(B)=size(index)
    A([2 5 9;1 1 1;8 5 6]):返回的时侯是一个3*3的矩阵

    >>A=magic(5)%括号中为索引值

    A =
    17 (1) 24 (6) 1 (11) 8 (16) 15 (21)
    23 (2) 5 (7) 7 (12) 14 (17) 16 (22)
    4 (3) 6 (8) 13 (13) 20 (18) 22 (23)
    10 (4) 12 (9) 19 (14) 21 (19) 3 (24)
    11 (5) 18 (10) 25 (15) 2 (20) 9 (25)

    >>A(8)

    ans =
    6

    >>A([1 10 5 2 2 1 3])

    ans =
    17 18 11 23 23 17 4

    >>A([2 5 9;1 1 1;8 5 6])

    ans =
    23 11 12
    17 17 17
    6 11 24

      


    3.布尔法引用

    A(X):X是一个有0和1组成布尔型数据,且size(A)=size(X),对应位置为1则留下该数据,0则去掉,最后按A中的存储顺序,返回一个列向量

    假如说A是3*3的数组

    A(logical([1 0 0;0 1 0;0 0 1])):表示引用了数组A的对角线元素,注意必须使用logical将0/1数组转换为布尔型

    >>A=magic(3)%生成一个3*3的数组

    A=
    8 1 6
    3 5 7
    4 9 2

    >>x=logical([1 1 0;0 1 1;1 0 1])%将double转化为boolean型数据

    x =
    1 1 0
    0 1 1
    1 0 1

    >>A(x)%引用对应位置为1的数据,返回列向量

    ans =
    8
    4
    1
    5
    7
    2

    >>x=A>5%是有了比较语句,返回布尔型数据,对应位置数据大于5的为1,否则为0

    x =
    1 0 1
    0 0 1
    0 1 0

    >>A(x)%返回大于A中大于5的元素,其实该命令可以一次性执行A(A>5)或者find(A>5),前者返回具体元素,后者返回大于5的数据的索引值

    ans =
    8
    9
    6
    7

    >>A(A>5)%一次性执行上面的命令

    ans =
    8
    9
    6
    7

    >>indx=find(A>5)%查找A中对于5的元素,返回它们的索引(index)值,此时我们可以通过A(index)返回具体的元素

    index =
    1
    6
    7
    8

      

     

     


    转载请注明本文地址: Matlab中数组元素引用——三种方法
    展开全文
  • 一维数组元素的引用方法主讲人李刚目录1一维数组元素引用实例演示2一维数组元素... 一维数组元素引用的格式数组引用格式数组名[下标]下标为整数从0开始最大值为长度-1下标要用方括号括起来例如int a[5]={2,7,9,4,3}; a
  • 二维数组元素指针引用 指针一维数组和二维数组 1.定义 2.关系 3.数组指针和指针数组的区别 数组指针(也称行指针) 定义 int (*p)[n]; ()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的...

    二维数组元素指针引用

    1.定义
    2.数组指针和指针数组的区别

    1.二维数组可以理解为是一个一维数组,不过每个数组元素又是一个一维数组
    int a[2][3]={{1,2,3},{4,5,6}};
    可以理解为,二维数组只有两个元素,即a[0]和a[1],只不过元素类型为一维数组
    指向二维数组的指针(行指针)
    格式:类型 (*指针名) [N]
    N为数组的第二维长度

    2.二维数组指针与指针型数组的区别

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

    int *p0[3] = a;    //错误,将一个二维数组赋给指针型数组
    
    int(*p1)[3] = a;   //正确
    

    数组指针(也称行指针)
    定义 int (*p)[n];
    ()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。

    如要将**二维数组**赋给一指针,应这样赋值:
    int a[3][4];
    int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组。
     p=a;        //将该二维数组的首地址赋给p,也就是a[0]或&a[0][0]
     p++;       //该语句执行过后,也就是p=p+1;p跨过行a[0][]指向了行a[1][  ]
    

    比如要表示数组中i行j列一个元素:

    *(p[i]+j)*(*(p+i)+j)(*(p+i))[j]、p[i][j]
    

    优先级:()>[]>*
    出处:
    https://www.cnblogs.com/hongcha717/archive/2010/10/24/1859780.html

    3.实现一个3*4阶矩阵转置 指针为形参

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    #include<stdlib.h>
    //定义一个3行4列的二维数组arr。
    //定义一个函数func()完成矩阵转置,以数组指针作为参数。
    //在func()函数内部,使用for循环完成矩阵转置
    void func(int(*pa)[4], int(*pb)[3], int x, int y)
    {
        int i, j;
        /*-------------------------begin------------------*/
        for(i=0;i<x;i++)
           for(j=0;j<y;j++){      	
           	 *(pb[j]+i)=*(pa[i]+j);
           	 // *(*(pb+j)+i)=*(*(pa+i)+j);
           	 // pb[j][i]=pa[i][j];
           	 // (*(pb+j))[i]=(*(pa+i))[j];
    	   }
        /*--------------------------end-------------------*/
        printf("转置:\n");
        for (i = 0; i < y; i++)
        {
            for (j = 0; j < x; j++)
            {
                printf("%d\t", pb[i][j]);
            }
            printf("\n");
        }
    }
    int main()
    {
        int i, j;
        int arr[3][4], brr[4][3];
        printf("输入二维数组的元素:\n");
        for (i = 0; i < 3; i++)
        {
            for (j = 0; j < 4; j++)
            {
                scanf("%d", &arr[i][j]);
            }
        }
        func(arr,brr,3,4);
        return 0;
    }
    
    
    
    

    在这里插入图片描述
    另有:

    数组元素访问 方法总结

    展开全文
  • 引用数组元素的四种方式

    千次阅读 2020-02-29 23:10:58
    //注意a++是不可的,因为a本来就代表了数组的首地址,a是不可改变的。 { printf ( "%d\n" , * p ) ; } printf ( "-----------------\n" ) ; for ( p = a , i = 0 ; i < 5 ; i ++ ) ...
  • C语言数组引用

    千次阅读 2019-11-23 23:20:08
    数组元素的一般形式为:数组名[下标](下标从0开始) printf("%d\n",arr[5]) 数组名arr通常情况下代表数组元素的首地址 printf("%d\n",arr); //输出为1 数组名arr在两种情况表示整个数组(即不表示元素首地址...
  • Matlab中数组元素引用

    千次阅读 2019-09-12 17:13:53
    原文链接 :... Matlab中数组元素是按列存储比如说下面的二维数组A= 816 357 492Matlab的存储顺序是8,3,4,1,5,9,6,7,2,也就是说先行后列,对于3维数组呢,就是先行后列再页...
  • 二维数组元素引用

    千次阅读 2020-03-04 11:21:17
    下面代码中,三种引用 ```cpp #include <iostream> using namespace std; int main() { int b = 0; int a[3][4] = { {1,2,3,6},{2,5,6,76},{6,4,7,3} }; for (int i = 0; i < 3; i++) for (int j = 0...
  • 1.不能建立引用数组,但是可以建立数组引用。 c++中,引用可以说只是某个变量的别名,所谓别名,是和指针类型区分开的,指针类型可以指向某个变量,而且指针类型本身也是一个变量,而引用本身实际上不是一个变量...
  • js代码-数组引用陷阱 reverse reverse() 方法将数组中元素的位置颠倒,并返回该数组的引用
  • 1.数组指针:即指向数组的指针 ...2.通过指针引用数组元素的基本方法 (1)小标法:a[i]。 (2)指针法:* (a+i) 或 * (p+i) 或 p[i]。其中,a是数组名,p=a,p是指向数组元素的指针变量。 问:为什么*
  • 通过指针引用数组元素

    千次阅读 2017-05-23 17:18:36
    通过指针应用数组元素: (1)下标法,如a[i]形式; (2)指针法,如*(a+i)或*(p+i)。其中a是数组名,p是指向数组元素的指针变量,其初值p=a; 例如:有一个整数数组a,有10个元素,要求输出数组中的全部元素。 ...
  • 本文实例讲述了C#比较二个数组并找出相同或不同元素的方法。分享给大家供大家参考,具体如下: string[] arr1 = new[] { 1, 2, 3, 4, 5 }; string[] arr2 = new[] { 1, 3, 5 }; var sameArr = arr1.Intersect(arr2)...
  • MATLAB数组元素引用的三种方法

    万次阅读 2017-05-17 10:26:33
    1. Matlab中数组元素引用有三种方法: - 下标法(subscripts) - 索引法(index) - 布尔法(Boolean) - Markdown和扩展Markdown简洁的语法 - 代码块高亮 - 图片链接和图片上传 - LaTex数学公式 - UML...
  • 力扣(C++):移除数组中的元素

    千次阅读 2020-01-11 15:56:30
    给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 元素的顺序可以改变...
  • 引用类型数组

    千次阅读 2019-03-11 19:48:26
    引用类型数组元素中放的是从基本类型构造而来的类和其他复杂数据类型的地址。 两种类型数组的图解 基本类型数组:arr是引用,放在栈内存中,new的部分属于对象,在堆内存中。arr里存的是对象的地址。 引用类型...
  • 在c语言中引用数组元素时,其数组下标的数据类型允许是:整型常量或整型表达式。C语言规定只能逐个引用数组元素而不能一次引用整个数组,数据元素的表示形式为“数组名[下标]”,下标可以是整型常量...
  • Java之路:数组引用传递

    万次阅读 多人点赞 2018-12-04 12:08:22
    试想一下,假如数组中有上万个元素,在拷贝数组时,如果将数组a的所有元素都一一拷贝至数组b,时间开销很大,有时候也不是必需的。 所以,在Java语言中, b = a(a和b都是引用名)的含义就是将a起个别名&amp;...
  • 使用指针访问二维数组中的元素C语言程序设计11200C语言使用指针访问二维数组中的元素数组与指向数组的指针数组按照维度或者说按照下标的个数分为一维数组二维数组数组和变量的使用一样可以归纳为三步第一数组的定义...
  • 代码 ... public class InputArray { public static void main(String args[]) { int[] a = {100, 200, 300}; //输出数组a的长度 System.out.println("数组a的长度;... System.out.println("数组a的引用:" + a);
  • 传值、传指针、传引用的区别: 值传递,指针传递,当发生函数调用时,需要给形参分配空间...数组有两个特性,影响作用在数组上的函数:一是不能复制数组,二是使用数组名时, 数组名会自动指向其第一个元素的指针。 因
  • 关于C++中的数组引用

    千次阅读 2018-08-31 18:26:29
    #include &lt;iostream&gt; void func(int (&amp;a)[7]) { ...... ...... } int main() { int a[] = {1,2,3,4,5,6,7};...数组引用,有点像数组指针------int (*a)[7],这里的a就是指向一...
  • C++数组引用引用数组

    万次阅读 多人点赞 2018-10-30 15:53:27
    )array[] array是个数组,其中的元素引用 //应该叫:引用数组 int &amp;array[] //array首先和&amp;结合,所以array是引用引用的对象是数组 //应该叫作数组引用 int (&amp;array...
  • JAVA删除数组中指定元素

    千次阅读 2018-12-28 16:41:42
    //返回剔除指定元素数组 public int[] getThree(int[] scores){ //剔除不符要求的元素(此处为 &lt;0 或 &gt;100) for(int i = 0 ; i &lt; scores.length ; i++ ){ if(scores...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 470,690
精华内容 188,276
关键字:

数组的引用与元素