gkLin 2023-02-25 13:15 采纳率: 75%
浏览 22

C++动态创建多维数组的指针问题

不太懂C++里的动态创建多维数组,碰到了一段代码

#include<iostream>
using namespace std;
void main(){
float(*cp)[9][8];
int i,j,k;
cp=new float[8][9][8];
for(i=0;i<8;i++){
for(j=0;j<9;j++){
for(k=0;k<8;k++){
#赋值代码}}}}

不太了解前面的float(*cp)[9][8];不是二维的吗
为什么可以直接new float一个三维的数组

  • 写回答

3条回答 默认 最新

  • GPT_Pro 2023-02-25 13:24
    关注

    该回答内容部分引用GPT,GPT_Pro更好的解决问题
    float(cp)[9][8] 是C++中动态创建多维数组的指针,其中cp是一个指向二维数组的指针,指向的二维数组大小为98,而这里也可以使用new float一个三维数组。

    这是因为在C++中,我们可以通过指针来动态创建多维数组,其中每一层的大小可以是不同的,比如一个345的三维数组,可以使用如下的代码来动态创建:

    int ***array = new int[3][4][5];
    

    这里的array是一个三维数组的指针,其指向的三维数组大小为345,其实就是形成了一个三维的“盒子”,每一个盒子里都有一个int型的元素。

    而在C++中也可以使用指针来动态创建多维数组,但是每一层的大小必须都是相同的,比如创建一个333的三维数组,可以使用如下代码来动态创建:

    int ***array = new int[3][3][3];
    

    这里的array也是一个三维数组的指针,其指向的三位数组大小也是333,同样也是形成了一个三维的“盒子”,每一个盒子里也都有一个int型的元素。

    所以在C++中使用float(cp)[9][8]来动态创建多维数组,就是创建了一个298的三位数组,每一个“盒子”里都有一个float型的元素。而可以直接使用new float一个三位数组,就是因为这里所有三位里面每一层都有相同大小98。
    如果回答有帮助,望采纳。

    评论

报告相同问题?

问题事件

  • 创建了问题 2月25日

悬赏问题

  • ¥15 itunes恢复数据最后一步发生错误
  • ¥15 关于#windows#的问题:2024年5月15日的win11更新后资源管理器没有地址栏了顶部的地址栏和文件搜索都消失了
  • ¥15 看一下OPENMV原理图有没有错误
  • ¥100 H5网页如何调用微信扫一扫功能?
  • ¥15 讲解电路图,付费求解
  • ¥15 有偿请教计算电磁学的问题涉及到空间中时域UTD和FDTD算法结合的
  • ¥15 vite打包后,页面出现h.createElement is not a function,但本地运行正常
  • ¥15 Java,消息推送配置
  • ¥15 Java计划序号重编制功能,此功能会对所有序号重新排序,排序后不改变前后置关系。
  • ¥15 关于哈夫曼树应用得到一些问题