c语言如何在动态的结构体数组开辟新空间

2024-12-03 13:29:05
推荐回答(4个)
回答1:

你这个已经开辟好了啊,
array = (struct record *)malloc(sizeof(struct record )*num);
就是开辟了num*sizeof(struct record )大小的连续空间
不过你后边对array进行操作时候尽量不要用数组形式,用指针形式会比较好。
开辟好了,你这就是固定的num个元素的数组,
如果要增大这个数组中元素的个数,就是把这个数组变长的话,
只能重新申请新的总个数的空间大小,比如增长m个
就只能重新申请 (struct record *)malloc(sizeof(struct record )*(num+m));
然后把原来的数据复制过去,因为数组是连续的空间,必须一次分配好全部内存才行。

回答2:

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;//析构中释放内存。
        }
};

回答3:

array = (struct record *)malloc(sizeof(struct record )*num);这就代表你已经开辟了一个空间给array了。

如果你想往里面写东西就可以这样,array.coef = 2.2,array.expn = 3;

回答4:

array = (struct record *)malloc(sizeof(struct record )*num);就是这个