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页有动态数组的源代码,我没时间给你抄代码,我想你应该有这本书的。
三、或用链表。