繁体   English   中英

如何在结构中存储未知大小的值数组

[英]How to store an array of values of unknown size in a struct

我目前有我创建的这个结构,我已经在 main 中初始化了指针。 而且我坚持理解如何向指针添加一个值然后调整它的大小,因为它正在等待用户输入。 下面的代码是我的简化版本,基本上我想知道如何将作业的每个值添加到结构中的 jobNum 变量并调整它的大小,以便我可以为 jobNum 存储任意数量的值。 我对 memory 分配很陌生。

    typedef struct {
         int* jobNum;
     }JobInfo;

   void get_job(JobInfo* jobCalled, int job){
        jobCalled->jobNum = job;

   }
     void main(int argc, char *argv[]){
         jobCalled.jobNum = malloc(sizeof(int));
    
        while(1){
            //Other Processes
            if (USER_INPUT == 'job'){
                 int job = argv[1];
                 get_job(&jobCalled, job);
           }
        }
    
}

听起来你在理解分配方面有困难。 我建议学习链表。 基本上简而言之:

typedef struct{
    void *head;
    void *next;
}myType;
void addElem(myType *ptr){
    myType *new = (myType*)malloc(sizeof(myType));
    ptr->next = new;
    new->next = NULL;
}

这是做你正在谈论的事情的准系统方式,其中 head 元素指向你的第一份工作,但我相信它适合你学习铸造,分配等。你很可能需要创建一个 function也会初始化你的 head first job。 如果要删除元素,您还可能希望使用 free 从列表中取消分配 memory。 还值得注意的是,最好有一个单独的类型,它将是一个单独的元素,这样您只分配一个头指针,但如果您在理解这个概念时遇到困难,这种方法会更容易。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM