美文网首页
关于C++中静态的二维数组和动态申请二维数组的访问的区别

关于C++中静态的二维数组和动态申请二维数组的访问的区别

作者: SHERRRRRR | 来源:发表于2018-07-27 19:46 被阅读0次

之前c++类的题目中有一道关于二维数组的题目,类的内部有一个二维指针,唉,算了,没有校园网题目不能截图还是算了吧,总之

通过

int **p=new int*[m];

for(int i=0;i<m;i++) 

    p[i]=new int[n];

得到的p[m][n]与直接int p[m][n]的访问方式是不同的 。

动态申请,访问p[a][b],过程是先到int* p[a],在访问(p[a])[b],

但是直接申请的访问方式int p[m][n]是 p[a*n+b](应该没写错吧)

那一道类的题目中,类内部有二维指针的,通过传入二维数组的指针的构造函数,是通过

int **p=new int*[m];

for(int i=0;i<m;i++)

    p[i]=new int[n];

for(int i=0;i<m;i++)

    for(int j=0;j<n;j++)

        p[i][j]=src[i][j];

赋值的

因此如果传入的二维指针是(int**)强制转换int p[m][n]得到的,则会出错.

因为src[i][j]在这里的意义变成先得到int*指针src[i],但是二维数组的src[i]其实并不是一个指针而是等同于src[i][0]即src[i*n+0],所以继续访问src[i][j]就会出错了。

相关文章

  • 关于C++中静态的二维数组和动态申请二维数组的访问的区别

    之前c++类的题目中有一道关于二维数组的题目,类的内部有一个二维指针,唉,算了,没有校园网题目不能截图还是算了吧,...

  • 1.数据类型、类、package

    数组 1.数组静态初始化: 数组静态初始化简写: 2.数组的动态初始化 3.二维数组静态初始化: 4.二维数组动态...

  • Java基础指数-数组

    数组 一维数组 创建方式: 动态创建: 静态创建: length 属性: 数组的迭代: 二维数组创建方式: 数组的...

  • 数组

    数组的初始化:动态初始化与静态初始化 数组元素的默认初始化值:image.png###二维数组: 如何遍历二维数组...

  • 第三章③多维数组

    1.二维数组,可以看成一维数组里放得数组 二维数组的初始化 静态初始化;不用指出数组的长度,直接赋值动态初始化:先...

  • Day12

    一. 二维数组 定义所谓的二维数组就是在数组中存放数组外层数组中存储的是数组的引用 初始化静态初始化先指定数组中的...

  • C语言动态数组

    一维动态数组 二维动态数组

  • VBA之数组

    数组的声明 一维数组 二维数组 动态数组

  • Java中的数组

    数组的申请:动态数组 静态数组的初始化 常见的错误(exception) +数组索引越界 //即访问不存在的索引+...

  • 指针数组-访问二维数组

    用指针数组访问二维数组

网友评论

      本文标题:关于C++中静态的二维数组和动态申请二维数组的访问的区别

      本文链接:https://www.haomeiwen.com/subject/fxngmftx.html