精华内容
下载资源
问答
  • 对于数组元素的引用
    千次阅读
    2019-04-24 17:15:47

    引用一个数组元素可以有以下两种方法:
    (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中数组元素引用有三种方法用于解决数组命名数组读取等问题
  • 指针 二维数组元素引用

    千次阅读 2020-12-30 16:30:24
    二维数组元素指针引用 指针与一维数组和二维数组 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;
    }
    
    
    
    

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

    数组元素访问 方法总结

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

    千次阅读 2021-04-21 13:47:45
    1.Matlab中数组元素引用有三种方法1.下标法(subscripts)2.索引法(index)3.布尔法(Boolean)注意:在使用这三种方法之前,大家头脑一定要清晰的记住,Matlab中数组元素是按列存储(与Fortran一样),比如说下面的二维...

    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中数组元素引用[参考].pdf
  • C语言引用一个数组元素的三种方式

    千次阅读 2022-03-03 20:11:44
    其中a是数组名,p是指向数组元素的指针变量,其初值为p = a。 代码实现: #include<stdio.h> #include<stdlib.h> int main(void){ int a[10], i; int *p; p = a; // 数组首地址赋值给p for(i = 0; ...

    下标法,如a[i]形式,这是最简单的方式 了;

    指针法,如 * (a+1) 或 *(p+1)。其中a是数组名,p是指向数组元素的指针变量,其初值为p = a。

    代码实现:

    #include<stdio.h>
    #include<stdlib.h>
    
    int main(void){
    	int a[10], i;
    	int *p;
    	p = a;  // 数组首地址赋值给p
    	for(i = 0; i < 10; i++){
    		a[i] = rand()% 100 +1;
    	} 
    	printf("下标法访问数组: ");
    	for(i = 0; i < 10; i++){
    		printf("%5d", a[i]);
    	}
    	printf("\n通过数组名计算数组元素地址,找出元素的地址:");
    	for(i = 0; i < 10; i++){
    		printf("%5d", *(a+i));
    	}
    	printf("\n用指针变量指向数组元素: ");
    	for(i = 0; i < 10; i++){
    		printf("%5d", *(p+i));
    	} 
    	return 0;
    } 
    

    实验截图:

    在这里插入图片描述

    展开全文
  • 一维数组元素的引用方法主讲人李刚目录1一维数组元素引用实例演示2一维数组元素引用的格式3一维数组元素引用的举例1 一维数组元素引用实例演示1. 一维数组元素引用实例演示实例介绍影院座位连续人员调动内存空间连续...
  • 摘要:、引用元素顾公众它包者和竞争业内应商企业部因外部的供等因素和素括企客、引用元素,相互系环境活动内部各部关系作、之间门之间以及与竞争营销有协企业企业企业微观务等的关、服是指。下标叙述功方罗汉的练...
  • 1.数组指针:即指向数组的指针那么, 如何...2.通过指针引用数组元素的基本方法(1)小标法:a[i]。(2)指针法:* (a+i) 或 * (p+i) 或 p[i]。其中,a是数组名,p=a,即p指向数组a首元素的地址。问:为什么* (a+i) 和* ...
  • js代码-数组引用陷阱 reverse reverse() 方法将数组元素的位置颠倒,并返回该数组引用
  • 引用数组元素的四种方式

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

    千次阅读 2018-07-07 10:07:38
    布尔法(Boolean)在使用这三种方法之前,大家头脑一定要清晰的记住,Matlab中数组元素是按列存储(与Fortran一样),比如说下面的二维数组A= 8 1 6 3 5 7 4 9 2Matlab的存储顺序是8,3,4,1,5,9,6,7,2,也就是说...
  • Matlab中数组元素引用

    千次阅读 2019-09-12 17:13:53
    原文链接 :... Matlab中数组元素是按列存储比如说下面的二维数组A= 816 357 492Matlab的存储顺序是8,3,4,1,5,9,6,7,2,也就是说先行后列,对于3维数组呢,就是先行后列再页...
  • 对于二维数组,省略只能省略第一个方括号中的常量表达式 如上的初赋值语句等同于: int a[4][3] = {{1, 2, 3}, {4, 5}, {6}, {8}}; 第二种:int = c[][3] = {1, 2, 3, 4, 5}; 要计算第一个空的方括号中的...
  • 引用的概念 ...上述代码中,array为一个引用引用对象为a,可通过对array的修改间接修改数组a 引用数组 int a = {1, 2}; int& array [2] = a; 由于array先向右结合,所以 int& arr
  • 在c语言中引用数组元素时,其数组下标的数据类型允许是:整型常量或整型表达式。C语言规定只能逐个引用数组元素而不能一次引用整个数组,数据元素的表示形式为“数组名[下标]”,下标可以是整型常量...
  • MATLAB数组元素引用的三种方法

    千次阅读 2021-04-18 07:07:22
    1. Matlab中数组元素引用有三种方法:下标法(subscripts)索引法(index)布尔法(Boolean)注意:在使用这三种方法之前,大家头脑一定要清晰的记住,Matlab中数组元素是按列存储(与Fortran一样),比如说下面的二维数组:...
  • 05_如何引用数组元素1

    2022-08-04 14:05:47
    1. 段地址:偏移地址 2. 直接寻址、间接寻址 3. 如何引用数组元素 1. 先编译连接 4. F8 单步跟踪
  • Java实验——数组引用元素

    千次阅读 2021-08-05 10:16:05
    实验2.2 数组引用元素 一、实验目的 本实验的目的是让学生掌握数组属于引用型的一种复合弄数据类型。 二、实验要求 编写一个简单的Java应用程序,该程序在命令行窗口输出数组引用以及元素的值。 三、...
  • 相关问题字符,数组,字符串,有关,数组,函数,参数,说法,数组,名,函数,参数,数组,名,代表,数组,元素,地址,数组,名,函数,参数,时,调用函数,过程,形参,数组,内存单元,形参,数组,名,时,数组,名,代表,数组,元素,地址,寻址,...
  • C语言:二维数组元素引用

    千次阅读 2017-09-12 17:34:08
    任务代码: (1) #include int main() { int a[3][5],i,j; printf("输入3*5数组:\n"); //输入 for(i=0;i;i++) { for(j=0;j;j++) { scanf("%d",&a[i][j]); }
  • 1、通过下标来获取数组元素值。 通过数组对象的下标获取制定的元素值,例如:获取元素中第1个元素的值, list = new Array(1,2,3,4,5) var a = list[0] 这样a 就是list 的第一个元素的值了。 重要 ,这里要是...
  • python数组

    千次阅读 2021-02-09 20:18:37
    ## Python数组注意:Python不具有对数组的内置支持,但是可以使用[Python列表](https://www.w3schools.com/python/python_lists.asp)代替。注意:此页面显示了如何将LISTS用作数组,但是,要在Python中使用数组,您...
  • 在创建数组时不指定数组元素个数,而直接把内容指定 int[ ] arr=new int[ ]{1,2,3,4,5}; 需要注意的是: ·静态初始化虽然没有指定元素个数,但是编译器会根据{ }里的东西确定长度; ·静态初始化可以省略new T[ ...
  • Javascript中数组元素是什么

    千次阅读 2021-07-08 12:00:41
    在Javascript中,数组中存储的每个值称为数组元素,它是组成数组的基本单元。数组元素也是一种变量,其标识方法为数组名后跟一个下标,下标表示了元素在数组中的顺序号;...JS数组元素引用 数组中存储的每个元素都有
  • C++:引用数组引用

    千次阅读 2021-11-26 10:27:09
    C++:引用数组引用) 在C++里,数组引用如下: //第一种方法(常用) //1,定义数组类型 typedef int(my_arr)[5]; typedef int my_arr1[5]; //2,建立引用 my_arr1& arref = arr;//建立引用,相当于int &...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 542,943
精华内容 217,177
热门标签
关键字:

对于数组元素的引用