zoukankan      html  css  js  c++  java
  • 二维指针不能指向二维数组

    发现问题:

      遇到了一个指针问题:我尝试用一个二维指针指向一个二维数组,发现编译不能通过。 eg:  int vis[10][10], int **vis = vis;

    问题分析:

      后来发现 int** 是指向指针数组的指针,二维数组其实只是一个指针,而二级指针是指向指针的指针,所以二者并不等价。如上例所示:int a[2][2];

       a是指向整个数组的首地址,并不是int **;所以不要指望向函数fun里面传实参 p=a;如果将二维数组 a强制转换成 **类型会有问题。

      例如:int a[2][2]={0,1,2,3};

      int **p=(int**)a;//强制将二维数组指针转为指向指针的指针

      则此时p[0]=0;p[1]=1;p[2]=2;p[3]=3; //这里也是碰巧了, 指针和int都是4字节,恰巧每次移动到了对应值得位置;如果换成别的类型,或者64位设备就不会这么巧了;

    解决问题:

      可以初始化一个指向数组的指针数组 int (*vis)[10]。 这样来指向二维数组的首地址。

  • 相关阅读:
    Linux+Apache环境下安装SSL证书
    Linux+Tomcat环境下安装SSL证书
    nginx配置ssl证书实现https访问
    Centos7安装jenkins
    kali linux网络配置
    Docker 国内镜像的配置及使用
    centos7安装tomcat8.5
    centos7 安装nginx
    Kali linux 2018 安装 Fluxion
    mysql5.7安装
  • 原文地址:https://www.cnblogs.com/luntai/p/5343904.html
Copyright © 2011-2022 走看看