zoukankan      html  css  js  c++  java
  • 二维数组的指针

    首先,定义一个二维数组int Array[y][x];

        一、 对于二维数组的指针偏移的运算法则。同一维数组一样,二维数组的数组名也是指向第一个数组元素的(即Array等于&Array[0][0]),且二维数组的数组元素在计算机内的内存存放也是连续的,但不一样的是:Array+1的值不是&Array[0][1],而是&Array[1][0](即,对于二维数组Array[][x],指针Array+1中的1表示的字节数是sizeof(int)*x,而不是sizeof(int),若要表示Array[i][l]的地址,应该是 *(Array+i)+l,要复引用a[i][l],则应该是*(*(Array+i)+l)。

          但是注意,同一、二维数组名一样,虽然Array+1的值等于第二行第一个元素的地址,但是使用指针运算符引用  *(Array+1)得到值依然只是一个地址。

         二、指向二维数组的指针。

         如果建立一个这样的指针  int *ptr=Array  ,则对ptr的指针和下标运算和指向一维数组一样。对于Array这个二行三列的二维数组来说,ptr[i*x+l]表示的是第i行第l列的元素,因为二维数组的元素在内存中实际上也是线性存放的,所以ptr[i*x+l]访问到的第i*x+l个元素就是第i行第l列的元素(虽然编译器会报错)。另外对于这个指针不能采用ptr[i][l]的双下标运算,即使它指向一个二维数组。

         如果建立一个这样的指针  int(*ptr)[3]=Array  (表示建立一个指向有三列的二维数组的指针),则可以采用双下标运算ptr[i][l],或者*(*(ptr+i)+l),这都等效于Array[i][l]。

     
  • 相关阅读:
    pku3486Computers 动态规划
    pku2229sumsets(zjgsu,分花)
    pku2663Tri Tiling递推题
    pku1015Jury Compromise 动态规划
    pku3508Hide That Number一道加密算法题
    pku动态规划题目列表
    浅谈XXE攻击
    PHP核心配置详解
    SSRF漏洞用到的其他协议(dict协议,file协议)
    php中使用CURL之php curl详解
  • 原文地址:https://www.cnblogs.com/Mingusu/p/11924504.html
Copyright © 2011-2022 走看看