c++二维数组大小有吗?怎么解决?

发布网友 发布时间:2022-04-24 09:39

我来回答

3个回答

热心网友 时间:2022-06-18 14:23

float Slaver1buf[2034][Num];
c++这种定义是不允许的。数组的空间是在运行前分配的,而程序运行前Num大小未知,所以是不可以的。另外,数组太大也会溢出。
你可以使用指针数组然后用new来动态分配。
float *Slaver1buf[2034];
int i;
for(i = 0;i<2034;i++)
Slaver1buf[i] = new float[Num];

使用方法与你定义的Slaver1buf相同,用完记得delete.

热心网友 时间:2022-06-18 14:23

改用 Vector 吧,直接用 push_back(),一般只会出现Memory Overflow,
for (int i=0;i<2034;i++)
{ Masterbuf[i][0]=xbuf[i];
Masterbuf[i][x]=ybuf[i]; //赋值
}
这段的在x存入ybuf是什么意思?这样的话得用显式构造函数
explicit vector( size_type num, const TYPE& val = TYPE() );

#include <vector>

std::vector<float> MasterBuf[1023](Num);

MasterBuf[i].push_back();

参考资料:http://www.cppreference.com/wiki/stl/vector/vector_constructors

热心网友 时间:2022-06-18 14:23

一、你定义数组的时候那个num是多少啊,c/c++中定义数组必须明确指明数组的大小。如int a[800][888];
即使开辟大了,浪费了也得定义时指明大小,

二、要不你就用动态数组
清华大学出版社的 “c++语言程序设计(第三版)”第293页有动态数组的源代码,我没时间给你抄代码,我想你应该有这本书的。

三、或用链表。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com