如何定义动态的数组??
现在我想定义一个结构.但是在结构中有一个数组的大小不固定,可不可以在结构中定义一个动态的数组呢?如何定义?谢谢!
问题点数:0、回复次数:11Top
1 楼CMyMfc(星际人生:=E.F=FlyForEver)回复于 2005-04-04 11:43:24 得分 0
用指针吧, 或者用STLTop
2 楼pcboyxhy(-273.15℃)回复于 2005-04-04 11:43:33 得分 0
定义一个指针
然后需要多大就开多大的空间,
或者直接用 vectorTop
3 楼lw1a2(一刀 现在改六点下班了:()回复于 2005-04-04 11:44:02 得分 0
还是用类吧,用new
ps.ISO99已经支持动态数组了,但是只有少数编译器支持,例如devcppTop
4 楼kcengo(Refactoring++)回复于 2005-04-04 11:49:00 得分 0
一般可以先查询需要多大的空间,然后用new或malloc分配一段内存,
然后转化成你结构体指针进行访问
如:
size_t size = queryNeededBufferSize(...);
char* buf = new char[size];
retrieveData(buf,...);
MY_STRUCT* data = reinterpret_cast<MY_STRUCT*>(buf);
processData(data...);
delete [] buf;
Top
5 楼ShardowM(骄傲的猫)回复于 2005-04-04 11:52:50 得分 0
用vectorTop
6 楼ericqxg007(还有很多东西要学(卡卡一米阳光))回复于 2005-04-04 12:02:12 得分 0
用指针
再在结构中定义一个count记录动态数组的长度Top
7 楼ybb1567()回复于 2005-04-04 12:04:14 得分 0
typedef ____ SizeT;
SizeT **p=new SizeT *[n];
delete p;
//for example **********************
#include<iostream.h>
void main(){
int **p=new int *[2];
int a=999;
p[0]=&a;
cout<<p[0];
}
以上是分配一个大小固定的,p返回的是个二级指针,指向数组指针的指针,是段连续分配的空间。
如果想大小可以改变那么可以用链表吧。
SizeT *head;//头指针
struct Data{
SizeT *next,*entry;
};
具体操作可以参照链表创建的实现。
如果觉得功能还不构,你可以用STL。
Top
8 楼ybb1567()回复于 2005-04-04 12:05:03 得分 0
delete[] p;
漏掉了
Top
9 楼arrowcy(长弓手)回复于 2005-04-04 14:22:03 得分 0
用C++里面的new,delete,或者C里面的malloc,calloc,realloc,free都可以Top
10 楼chunhai12(小海)回复于 2005-04-04 14:28:09 得分 0
强烈建议用vectorTop
11 楼MagicCarmack(MagiC++)回复于 2005-04-04 14:46:05 得分 0
强烈建议用vector
STLTop




