m0_58638478
m0_58638478
2021-05-26 09:29
采纳率: 100%
浏览 28

请问c++可以这样定义二维数组吗

先定义整形x,y并赋值 再int data【x】【y】; 这样编译器好像报错,用的visual c++2017 萌新求教谢谢了

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • technologist_37
    CSDN专家-link 2021-05-26 09:40
    已采纳

    int data[x][y]方式要求x,y必须是已知常量,否则编译器不能通过,无法在栈内分配空间

    对于未知维度的数组,只能用指针的指针来动态分配空间

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

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

         p[i] = new int[y];

    点赞 评论
  • technologist_30
    CSDN专家-张老师 2021-05-26 09:37

    题主的问题,首先不能这样定义,你这种直接量定义数组方式,必须一开始声明大小

    假如想动态设置大小,可以调用函数动态分配空间

    点赞 评论
  • software7503

    C语言定义数组的大小只能是常量,有2种方法

    方法1写死:

          int data[3][4];

    方法2:

         #define X 3

         #define Y  4

        int data[X][Y];

    点赞 评论
  • qq_34124780
    爱晚乏客游 2021-05-26 09:34

    静态数组只能用常量开辟,动态数组可以使用变量。详细的内容你可以看看堆和栈的区别,静态数组存放在栈存储区,动态数组放在堆存储区,

    点赞 评论
  • QA_Assistant
    有问必答小助手 2021-05-26 17:10

    您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

    如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

    ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

    点赞 评论

相关推荐