2011-10-19 144 views
-2

如何建立在結構節點的陣列。 我上傳了我的樣本。嵌套結構問題

struct timebasedSpecificTimesIntervalNode 
{ 
    int hrs; 
    int min; 
    int sec; 
}; 

struct timebasedSpecificTimesInterval 
{ 
    struct timebasedSpecificTimesIntervalNode* nodes; 
    int count; 
    char *cFilePath; 
}; 

如何爲此結構創建節點數組timebasedSpecificTimesInterval。

struct timebasedSpecificTimesInterval specificTimes; 

如何在此結構中創建3個節點的數組。

編輯

創建結構這一價值觀

hrs:5,2,3 min 23,58,4 sec 54,12,2 

Thnks

+4

struct timebasedSpecificTimesInterval specificTimes [3] ??? – 2011-10-19 10:13:23

+0

@OAOD:實際上timebasedSpecificTimesInterval shouldnot是timebasedSpecificTimesInterval內部的array.only節點應該是一個數組。 – karthik

+0

從你的問題中,你仍然不清楚你想要達到的目標。靜態初始化,在運行時恰好爲3,還是可以更多(或更少)? – Nico

回答

2
int main(void) { 
    struct timebasedSpecificTimesInterval data; 
    data.count = 3; 
    data.nodes = malloc(data.count * sizeof *data.nodes); 
    data.cFilePath = NULL; 
    if (data.nodes) { 

     data.nodes[0].hrs = 5; data.nodes[0].min = 23; data.nodes[0].sec = 54; 
     data.nodes[1].hrs = 2; data.nodes[1].min = 58; data.nodes[1].sec = 12; 
     data.nodes[2].hrs = 3; data.nodes[2].min = 4; data.nodes[2].sec = 2; 
     /* use data */ 

     free(data.nodes); 
     data.nodes = NULL; /* optional */ 
     data.count = 0; 
    } 
    return 0; 
} 

編輯:在OP

+0

@ PMG more.not:u能分配這些小時,秒,分進入這個structure.That將是對我有幫助。 – karthik

+0

我看過你的編輯後,忍者編輯我的帖子。希望現在對你有用...... – pmg

+0

@ pmg:非常感謝。這就是我真正想要的。+ 1爲你的答案 – karthik

-1

除非我誤解的問題...就像你將任何其他數組:

struct timebasedSpecificTimesInterval specificTimes[3]; 
0

提供用於例如這是我會怎麼做。除非我完全錯誤的結束。我不是新結構關鍵字亂丟我的代碼的粉絲。

typedef struct 
{ 
    int hrs; 
    int min; 
    int sec; 
} timebasedSpecificTimesIntervalNode; 

typedef struct 
{ 
    timebasedSpecificTimesIntervalNode* nodes; 
    int count; 
    char *cFilePath; 
} timebasedSpecificTimesInterval; 

int main (void) 
{ 
    timebasedSpecificTimesIntervalNode nodeArray[3]; 
    timebasedSpecificTimesInterval specificTimesInterval; 

    //initialise the pointer 
    specificTimesInterval.nodes = nodeArray; 

    // you can now access the pointer as an array 
    nodeArray[0].hrs = 3; //arbitrary value 

}