簡體   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