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

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

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

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

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

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

     p[i] = new int[y];

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

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

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

方法1写死:

      int data[3][4];

方法2:

     #define X 3

     #define Y  4

    int data[X][Y];

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

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

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

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