请问三维动态数组的生成方法

denial 2014-05-31 10:00:40
希望生成形式如 A[m][n][6] 的数组。

double (**A)[6];

请问如何用 new 生成。非常感谢!

...全文
100 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lm_whales 2014-06-05
  • 打赏
  • 举报
回复
//A[m][n][6] typedef double array_6 [6]; 然后就可以 动态创建二维array_6动态数组了
赵4老师 2014-06-05
  • 打赏
  • 举报
回复
//在堆中开辟一个3×4×5的3维int数组
#include <stdio.h>
#include <malloc.h>
int ***p;
int i,j,k;
void main() {
    p=(int ***)malloc(3*sizeof(int **));
    if (NULL==p) return;
    for (i=0;i<3;i++) {
        p[i]=(int **)malloc(4*sizeof(int *));
        if (NULL==p[i]) return;
        for (j=0;j<4;j++) {
            p[i][j]=(int *)malloc(5*sizeof(int));
            if (NULL==p[i][j]) return;
        }
    }
    for (i=0;i<3;i++) {
        for (j=0;j<4;j++) {
            for (k=0;k<5;k++) {
                p[i][j][k]=i*20+j*5+k;
            }
        }
    }
    for (i=0;i<3;i++) {
        for (j=0;j<4;j++) {
            for (k=0;k<5;k++) {
                printf(" %2d",p[i][j][k]);
            }
            printf("\n");
        }
        printf("---------------\n");
    }
    for (i=0;i<3;i++) {
        for (j=0;j<4;j++) {
            free(p[i][j]);
        }
        free(p[i]);
    }
    free(p);
}
//  0  1  2  3  4
//  5  6  7  8  9
// 10 11 12 13 14
// 15 16 17 18 19
//---------------
// 20 21 22 23 24
// 25 26 27 28 29
// 30 31 32 33 34
// 35 36 37 38 39
//---------------
// 40 41 42 43 44
// 45 46 47 48 49
// 50 51 52 53 54
// 55 56 57 58 59
//---------------
Morrisss_ 2014-05-31
  • 打赏
  • 举报
回复
引用 2 楼 denial 的回复:
[quote=引用 1 楼 oYinGui1 的回复:]

#include <iostream>

int main()
{
    int (*p_arr)[3][3] = new int[3][3][3];
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            for (int k = 0; k < 3; k++) {
                p_arr[i][j][k] = i * j * k
            }
        }
    }
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            for (int k = 0; k < 3; k++) {
                std::cout << p_arr[i][j][k] << std::ends;
            }
        }
    }
    return 0;
}

谢谢,但是没有解决我的问题。仅知道一维是确定量,另外两维均是动态的。[/quote] new的用法你不知道么,方括号里的数都可以不是常量。
denial 2014-05-31
  • 打赏
  • 举报
回复
引用 1 楼 oYinGui1 的回复:

#include <iostream>

int main()
{
    int (*p_arr)[3][3] = new int[3][3][3];
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            for (int k = 0; k < 3; k++) {
                p_arr[i][j][k] = i * j * k
            }
        }
    }
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            for (int k = 0; k < 3; k++) {
                std::cout << p_arr[i][j][k] << std::ends;
            }
        }
    }
    return 0;
}

谢谢,但是没有解决我的问题。仅知道一维是确定量,另外两维均是动态的。
Morrisss_ 2014-05-31
  • 打赏
  • 举报
回复

#include <iostream>

int main()
{
    int (*p_arr)[3][3] = new int[3][3][3];
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            for (int k = 0; k < 3; k++) {
                p_arr[i][j][k] = i * j * k
            }
        }
    }
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            for (int k = 0; k < 3; k++) {
                std::cout << p_arr[i][j][k] << std::ends;
            }
        }
    }
    return 0;
}

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧