你这个已经开辟好了啊,
array = (struct record *)malloc(sizeof(struct record )*num);
就是开辟了num*sizeof(struct record )大小的连续空间
不过你后边对array进行操作时候尽量不要用数组形式,用指针形式会比较好。
开辟好了,你这就是固定的num个元素的数组,
如果要增大这个数组中元素的个数,就是把这个数组变长的话,
只能重新申请新的总个数的空间大小,比如增长m个
就只能重新申请 (struct record *)malloc(sizeof(struct record )*(num+m));
然后把原来的数据复制过去,因为数组是连续的空间,必须一次分配好全部内存才行。
1、可以在结构体中添加指针类成员变量,并在成员函数中实现动态数组的分配。
2、以下以一个仅实现整型动态数组,不包含其它功能的类为例做说明。
class array //类名
{
public:
int *v; //动态数组首地址。
int length; //动态数组长度。
array(int len)
{
if(len <= 0)//初始化长度非法。
{
length = 0;
v = NULL;
}
else
{
length = len;
v = new int[length];//内存分配。
}
}
~array()
{
delete [] v;//析构中释放内存。
}
};
array = (struct record *)malloc(sizeof(struct record )*num);这就代表你已经开辟了一个空间给array了。
如果你想往里面写东西就可以这样,array.coef = 2.2,array.expn = 3;
array = (struct record *)malloc(sizeof(struct record )*num);就是这个