精华内容
下载资源
问答
  • 用指针引用二维数组元素 C语言 指针引用二维数组 什么用指针引用二维数组元素 C语言 指针引用二维数组 什么相关问题:匿名网友:a 是数组首地址,等于 &a[0][0].*p 声明里是指针。语句里 *p 是 指针指向的值。...

    导航:网站首页 >

    用指针引用二维数组元素 C语言 指针引用二维数组 为什么

    用指针引用二维数组元素 C语言 指针引用二维数组 为什么

    相关问题:

    匿名网友:

    a 是数组首地址,等于 &a[0][0].

    *p 声明里是指针。语句里 *p 是 指针指向的值。 语句里 p 是地址.

    *p 是1个星号的指针,可以让它指向1维数组,也可以让有序地它指向2维数的各元素。

    int a[行][列]; a[j][i] 数组元素排列 是:

    第一行 的 第1列,第二列,第三列....

    第二行 的 第1列,第二列,第三列....

    第三行 的 第1列,第二列,第三列....

    2维数可以看成1维数组,排成1字长蛇阵:第一行 的 第1列,第二列,第三列..;

    第二行 的 第1列,第二列,第三列....;。。。。直到最后一行最后一列。

    #define row 3

    #define col 4

    int a[row][col]; // 某一元素: a[j][i]

    int *p,i,j;

    排成1字长蛇阵后,一维下标,可以用二维 下标计算: j*col + i.

    某一元素: a[j][i] 的 数值 就是 * (p+j*col+i);

    ----

    写出完整程序,依次输出所有元素,对比:

    #include

    main()

    {

    #define row 3

    #define col 4

    int a[row][col] = { 0,1,2,3,4,5,6,7,8,9,10,11};

    int *p;

    int i,j;

    p=&a[0][0];

    for (j=0;j

    for (i=0;i

    printf("\n");

    }

    printf("===========\n");

    for (j=0;j

    for (i=0;i

    printf("\n");

    }

    return 0;

    }

    ======

    如果 是 int **p; 才有 *(*(p+i)+j))形式。

    对应 a[j][i], 指向的值 是 *(*(p+j) + i)

    匿名网友:

    1.用指针引用二维数组元素

    问:int a[][],*p; 如何用指针引用a[][]? p与a的区别是什么?(如:*(*...

    2.C语言 指针引用二维数组 为什么

    问:二维数组在内存里面也是线性排列的,为什么直接int *p=a;(a为一个二维...

    3.C语言调用二维数组元素时,能否用指针指向其中同一...

    答:指针的值一次只能指向一个地址,不能同时访问多个地址,但是可以通过指针的移位来依次访问二维数组同一行的多个元素。例如:*(*(arry+0) + 1)可以访问二维数组arry的第0行,第1列的元素

    4.用指针 调用二维数组里的元素 所用两个* 表示的意义

    问:我想问一下 用指针 调用二维数组里的元素 所用两个* 表示的意义 像:*(*...

    5.c语言二维数组用指针表示的问题

    问:#include void main() { int a[3][4]={1,3,5,7,9,11,13,15,17...

    6.C语言怎么用指针代替二维数组

    答:看你具体的应用,提供几个方法供参考: 1、一级指针 例: int a[M][N]; int *p = &a[0][0]; 相当于将二维数组当一维数组用,需要自己根据N的大小计算下标,使用却很灵活 2、指针数组 例: int a[M][N]; int *p[M]; for(int i=0; i

    7.求C语言高手指点:请问如何指针定义二维数组?? ...

    问:这几种方法逻辑上都好理解,但我就是在具体表达上面有很大问题,求高手...

    8.C语言 怎么用指针输出一个二维数组的全部值

    答:C语言的数组(不管多少维)在内存中都是线性储存的。所以用一级指针加偏移就可以访问所有元素。 举个例子,有一个10*10的二维数组a,这样就可以输出: int a[10][10];int *p = (int *)a;int i;for (i = 0; i < 10 * 10; i++)printf(%d, *(p + ...

    9.如何让指针指向二维数组?

    问:还有要怎么利用指针去引用二维数组中的元素

    10.假如我想用指向二维数组的指针来输入几串字符串,然...

    答:下面的例子告诉你想知道的问题: main() { char a[5][50]; char (*p)[30];//声明指向二维数组的指针 int i; p=a; for(i=1;i

    问题推荐

    展开全文
  • 怎样定义和引用二维数组 二维数组常称为矩阵。把二维数组写成行(row)和列(column)的排列形式,可以有助于形象地理解二维数组的逻辑结构。 一.怎样定义二维数组 其基本概念与方法与一维数组相似,如: float pay[3]...

    怎样定义和引用二维数组

    二维数组常称为矩阵。把二维数组写成行(row)和列(column)的排列形式,可以有助于形象地理解二维数组的逻辑结构。

    一.怎样定义二维数组

    其基本概念与方法与一维数组相似,如:

    float pay[3][6];
    以上定义了一个float型的二维数组
    第一维有3个元素,第二维有6个元素。每一维的长度分别用一对括号起来
    

    二维数组定义的一般形式为
    类型说明符 数组名 [常量表达式] [常量表达式]
    例如:

    float a[3][4],b[5][10];
    

    定义a为3x4(三行四列)的数组,b为5x10(5行10列)的数组,但是不能写成 float a[3,4],b[5,10];

    C语言对二维数组采用这样的方式定义,使得二维数组可被看作一种特殊的一维数组;它的元素又是一个一维数组,例如,可以把a看作一个一维数组,它有三个元素: a[0], a[1], a[2];
    每个元素又是包含4个元素的一维数组,如

    a[0] --- a[0][0] a[0][1] a[0][2] a[0][3]
    a[1] --- a[1][0] a[1][1] a[1][2] a[1][3]
    a[2] --- a[2][0] a[2][1] a[2][2] a[2][3]
      
    

    可以把a[0],a[1],a[2]看作3个一维数组的名字,上面的定义的二维数组可以理解为定义了三个一维数组,即相当于:
    float a[0][4],a[1][4],a[2][4];
    此处把a[0],a[1],a[2]看作一维数组名。

    用矩阵形式(如3行4列)表示二维数组,是逻辑上的概念,能形象地表示出行列关系。而在内存中,铬元素是连续存放的,不是二维的,是线性的。

    C语言还允许使用多维数组,有了二维数组的基础,再掌握多维数组是不困难的,例如定义三维数组的方法如下:

    float a[2][3][4];
    

    二.怎样引用二维数组的元素

    二维数组元素的表现形式为:
    数组名 [下标] [下标]
    例如,a[2][3] 表示a数组中序号为2的行中序号为3的元素。下标应是整形表达式,
    如a[2-1][22-1]。~~不要写成 a[2,3], a[2-1,22-1]形式。~~
    数组元素可以出现在表达式中,也可以被赋值,例如:

    b[1][2]= a[2][3]/2;
    

    注意,在引用数组元素时,下标值应在已定义的数组大小的范围内。在这个问题上常出现错误,例如:

    int a[3][4];   //定义a为3X4的二维数组
    ...
    a[3][4]=3//不存在a[3][4]元素
    

    按以上定义,数组a可用的“行下标”的范围为 0~2,“列下标”的范围为 0~3.
    用a[3][4] 表示元素显然超过了数组的范围。

    大家严格区分在**定义数组a[3][4]引用元素a[3][4]**的区别。
    前者用来定义a[3][4]来定义数组的维数和各维的大小
    后者a[3][4]中的3和4是数组元素的下标值,a[3][4]代表行序号为3,列序号为4的元素(行序号和列序号均从0起算)。

    三.二维数组的初始化

    可以用“初始化列表”对二维数组初始化。
    (1).分行给二维数组赋初值。例如

    ina a[3][4] = {(1,2,3,4),(5,6,7,8),(9,10,11,12)};
    

    这种赋值方法比较直观,把第一个花括号内的数据给第一行的元素,第二个花括号内的数据赋给第二行的元素…即按行赋初值。
    (2).可以将所有数据写在一个花括号内,按数组元素在内存中的排列顺序给各元素赋初值。例如:

    int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
    

    效果与前相同,但以第二种方法为好,一行对一行,界限清楚。用第(2)种方法如果数据多,则会写成一大片,容易疏漏,也不易检查。
    (3).可以对部分元素赋初值,例如:

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

    它的作用是只对各行第一列(即序号为0的列)的元素赋初值,其余元素值自动为0,赋初值后各组元素为:

    1   0   0   0 
    5   0   0   0
    9   0   0   0
    也可以对各行中的某一元素赋初值,例如:
    int a[3][4]={{1}{0,6}{0,0,11}};
    初始化后的数组元素为:
    1   0   0   0    0
    0   6   0   0    0
    0   0   0   11   0
    

    这种方法对非0元素少时比较方便,不必将所有的0都写出来,只需输入少量数据。
    也可以只对某几行元素赋初值:

    int a[3][4] ={{1},{5,6}};
    数组元素为:
    1   0   0   0
    5   6   0   0
    0   0   0   0 
    0   0   0   0
    第三行不赋初值
    也可以对第二行不赋初值,例如:
    int a[3][4] ={{1},{ },{9}};
    

    (4).如果对全部元素都赋初值(即提供全部初始化数据),则定义数组时对第一维的长度可以不指定,但第2维的长度不能省。例如:

    int a[3][4]= {1,2,3,4,5,6,7,8,9,10,11,12};
    与下面的定义等价:
    int a[][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
    系统会根据数据总行个数和第2维的长度算出第1维的长度。数组一共有12个元素,每行4列,显然可以确定行数为3

    在定义时也可以只对部分元素赋初值而省略第1维的长度,但应分行赋初值。例如:

    int a[][4] = {{0,0,3},{},{0,10}};
    这样的写法,能通知编译系统;数组共有3行。数组各元素为:
    0   0   3   0
    0   0   0   0
    0   10  0  0
    

    从本文的介绍可以看出:
    C语言在定义数组和表示数组元素时采用a[][]这种两个方括号的方式,对数组初始化时十分有用,它使概念清楚,使用方便,不容易出错。

    展开全文
  • C语言二维数组的定义和引用C语言二维数组的定义和引用7.1.1二维数组的定义前面介绍的数组只有一个下标,称为一维数组,其数组元素也称为单下标变量。在实际问题中有很多量是二维的或多维的,因此C语言允许构造多维...

    C语言二维数组的定义和引用

    C语言二维数组的定义和引用

    7.1.1二维数组的定义

    前面介绍的数组只有一个下标,称为一维数组,其数组元素也称为单下标变量。在实际问题中有很多量是二维的或多维的,因此C语言允许构造多维数组。多维数组元素有多个下标,以标识它在数组中的位置,所以也称为多下标变量。本小节只介绍二维数组,多维数组可由二维数组类推而得到。

    二维数组定义的一般形式是:类型说明符 数组名[常量表达式1][常量表达式2]

    其中常量表达式1表示第一维下标的长度,常量表达式2 表示第二维下标的长度。例如: int a[3][4];

    说明了一个三行四列的数组,数组名为a,其下标变量的类型为整型。该数组的下标变量共有3×4个,即:

    a[0][0],a[0][1],a[0][2],a[0][3]

    a[1][0],a[1][1],a[1][2],a[1][3]

    a[2][0],a[2][1],a[2][2],a[2][3]

    二维数组在概念上是二维的,即是说其下标在两个方向上变化,下标变量在数组中的位置也处于一个平面之中,而不是象一维数组只是一个向量。但是,实际的硬件存储器却是连续编址的,也就是说存储器单元是按一维线性排列的。如何在一维存储器中存放二维数组,可有两种方式:一种是按行排列, 即放完一行之后顺次放入第二行。另一种是按列排列, 即放完一列之后再顺次放入第二列。

    在C语言中,二维数组是按行排列的。即,先存放a[0]行,再存放a[1]行,最后存放a[2]行。每行中有四个元素也是依次存放。由于数组a说明为int类型,该类型占两个字节的内存空间,所以每个元素均占有两个字节)。

    7.1.2二维数组元素的引用

    二维数组的元素也称为双下标变量,其表示的形式为:

    数组名[下标][下标]

    其中下标应为整型常量或整型表达式。例如:

    a[3][4]

    表示a数组三行四列的元素。

    下标变量和数组说明在形式中有些相似,但这两者具有完全不同的含义。数组说明的方括号中给出的是某一维的长度,即可取下标的最大值;而数组元素中的下标是该元素在数组中的位置标识。前者只能是常量,后者可以是常量,变量或表达式。

    【例7.6】一个学习小组有5个人,每个人有三门课的考试成绩。求全组分科的平均成绩和各科总平均成绩。

    展开全文
  • 指针 二维数组元素引用

    千次阅读 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;
    }
    
    
    
    

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

    数组元素访问 方法总结

    展开全文
  • JSON定义一维数组:示例完整代码:varUserList=[{"UserID":11,"Name":{"FirstName":"Truly","LastName":"Zhu"},"Email":"zhuleipro◎hotmail.com"},{"UserID":12,"Name":{"FirstName":"Scott","LastName":"Gu"},...
  • 二维数组在说二维数组前先来说下一维数组中的指针数组和和数组的指针一、一维数组中指针数组和数组指针的区别指针数组:1 int *p[5];[]的优先级比*高,首先它是一个数组,它的大小是5,它里面存放的数据类型是int *,...
  • 二维数组在说二维数组前先来说下一维数组中的指针数组和和数组的指针一、一维数组中指针数组和数组指针的区别指针数组:1 int *p[5];[]的优先级比*高,首先它是一个数组,它的大小是5,它里面存放的数据类型是int *,...
  • 任务代码:【项目1-折腾二维数组】创建一个5行4列的二维整型数组,通过初始化,为数组中的前两列的10个元素赋初值,然后:通过键盘输入,使后两列的10个元素获得值;按行序优先输出数组元素;将所有元素值乘以3后...
  • 如果你想要行主序,给列rowIndex,列columnIndex,并且伪造(缺少一个更好的术语)具有numberOfColumns列的二维数组,公式是rowIndex * numberOfColumns + columnIndex.如果你想要行主序,列columnIndex并且伪造(缺少一个更...
  • 二维数组,锯齿数组和集合 C# 一维数组、二维数组(矩形数组)、交错数组(锯齿数组)的使用 C# 数组、多维数组(矩形数组)、锯齿数组(交叉数组) 二维数组,锯齿数组和集合 一.二维数组 二维数组:一维数组----...
  • Java编程基础阶段笔记 day06 二维数组 二维数组 笔记Notes 二维数组 二维数组声明 二维数组静态初始化与二位初始化 二维数组元素赋值与获取 二维数组遍历 二维数组内存解析 打印杨辉三角 Arrays工具类 数组中常见的...
  • 使用C语言进行二维数组引用,在最后一个位置需要明确指明数组的长度,使用指针进行顺序引用或者赋值。 具体代码: 代码如下(示例): #include <iostream> using namespace std; // void __(int a[10][10])...
  • C++一维数组定义一维数组定义一维数组一般格式为:类型标识符 数组名[常量表达式];例如:int a[10];它表示数组名a,此数组整型,有10个元素。关于一维数组的几点说明:1) 数组名定名规则和变量名相同,遵循...
  • 一、二维数组元素由其行、列下标决定 以float a[3][4];例: 1.引用a[2][3]—行、列下标均是整数 2.引用a[2-1][2*2-1]—行、列下标可以是整型表达式 3.a[1][2]=3.14/2;—数组元素作为赋值表达式的左值 4.a[3][4]=15...
  • #include int main() { int array[3][4] = {{0,1,2,3}, {4,5,6,7}... 二维数组要取其中的元素的值,需要两次解应用,即((p+i)+j),第一次解引用(p+i)的结果是一个地址,可看成是数组指针,值是数组第一个元素的地址*
  • C++培训之语言二维数组的定义和引用更新时间:2016年09月12日14时39分 来源:传智播客C++培训学院 浏览次数:C语言二维数组的定义和引用7.1.1二维数组的定义前面介绍的数组只有一个下标,称为一维数组,其数组元素也...
  • 二维数组引用,指针数组,数组的 指针) 在说二维数组前先来说下一维数组中的指针数组和和数组的指针 一、一维数组中指针数组和数组指针的区别 指针数组: int *p[5]; []的优先级比*高,首先它是一个数组...
  • 目录一维数组创建一维数组给一维数组赋值获取数组的长度常见错误二维数组创建二维数组二维数组赋值二维数组的使用场景多维数组不规则数组数组的基本操作遍历数组填充和批量替换数组元素难点解答什么数组索引从0...
  • java二维数组创建方法

    2021-04-23 13:39:01
    java动态创建二维数组,从零学java... type [ ][ ]arrayName Java 二维数组的声明、初始化和引用 二维数组的声明、初始化和引用与一维数组相似,这里不再详......java定义二维数组的几种写法_计算机软件及应用_IT/计算...
  • 引用类型数组 // 推荐这种方式声明和创建引用类型数组,其他方式略 ...二维数组 // 声明 int[][] a = new int[3][]; int[][] d = new int[3][4]; // 赋值 a[0] = new int[4]; // 再给赋值前要先创建数组 a[1]
  • java二维数组

    2021-02-12 16:27:35
    数组--是用来存储一组相同数据类型的数据的容器;数组本身是一个引用数据类型[]数组内部存储的元素?...二维数组1.数组的定义/声明;int[][] x;2.数组的初始化;静态初始化;--有长度 有元素int[][] x={{3,...
  •  这句话是定义了一个数组指针,并且将这个二维数组的首地址赋给指针,假如p+1就代表这个指针指向二维数组第二行的首地址,printf(“%d\n”,*p),什么输出的是数组地址呢printf(“%d\n”,**p);才是输出的地址中的...
  • 分享给大家供大家参考,具体如下:Java的二维数组是先创建一个一维数组,然后该数组的元素再引用另外一个一维数组。在使用二维数组的时候,通过两个中括号[]来访问每一层维度的引用,直到访问到最终的数据。public ...
  • # 1.C语言一维数组的定义和引用C语言支持一维数组和多维数组。如果一个数组的所有元素都不是数组,那么该数组称为一维数组。## 一维数组的定义方式在C语言中使用数组必须先进行定义。一维数组的定义方式:类型说明...
  • 说明:定义一个数组arr,二维数组中一维数组的个数3个,每个一维数组中元素的个数4个 二维数组的访问 通过下标访问二维的指定元素 class TwiceArrayDemo01 { public static void main(String[] args) { int[][]...
  • 1.二维数组二维数组就是存储一维数组(内存地址/引用)的数组 2.二维数组的初始化1) int intA[][]={{1,2},{2,3},{3,4,5}};2) int [][] intB=new int[3][5];3) int []intC []=new int[3][];intC[0]=new int[2];intC[1...
  • 深入理解一维数组与二维数组

    多人点赞 2021-10-08 10:49:50
    通过一些例子,加深对一维数组和二维数组的理解
  • C语言中的二维数组

    2021-05-18 09:58:12
    1.二维数组的定义和引用一. 数据类型 数组名[常量表达式1][常量表达式2];(1)假如有个二维数组array[n][m],则行下标的取值范围0~n-1(2)列下标的取值范围0~m-1(3)二维数组的最大下标元素是array[n-1][m-1];假如有一个...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 97,059
精华内容 38,823
关键字:

引用二维数组的一般格式为