2013-08-28 84 views
1

如果有人可以幫我解決問題,我想訪問結構中的信息。訪問結構內的數據

typedef struct {   
    int time;  
    char sat,rcv; 
    char LLI [3]; 
} obsd_t; 


typedef struct {     
    obsd_t *data;  
} obs_t; 

我有類似

obs_t obs; 
int x; 

現在我想X分配到的時間obsd_t所以我應該怎麼辦的價值。是這樣的正確

x=obs.data.time; 

P.S我看了看計算器的其他線程,但不能從那裏瞭解。一些沒有任何公認的答案,所以我不願意

+1

當你嘗試時會發生什麼? –

回答

6

你在混合一個指針和一個變量。使用.運營商結構變量(例如OBS),並使用->的指針(例如,用於數據)

x = obs.data->time

,或者您也可以使用這樣的俞灝

的建議

x = obs.(*data).time

+0

您可以在[本網站](http://pw1.netcom.com/~tjensen/ptr/pointers.htm)瞭解更多關於指針的信息。 –

4

您需要做的僅僅是這樣的:

x=obs.data->time; 

(在假定你已經初始化obs.dataobsd_t有效實例指向的。 )

3

你應該使用這樣的:

x = obs.data->time; 

因爲dataobs_t是一個指針。

一般而言,假定strcut foo* p;,然後在struct foo

(*p).bar 

p->bar 

訪問元件bar是相同

3

data是一個指針,指向obsd_t結構。你必須使用運營商的->代替.訪問由一個指針引用一個結構的元素:

x = obs.data->time; 
2

訪問data指針使用->運營商的結構:

x = obs.data->time; 

訪問使用的data的的地址操作者(解除引用指針):

x = obs.(*data).time 

兩種變型是正確的。如果您要訪問的結構是這樣Pointers and Structures

2

閱讀更多detailes x=obs.data.time;必須聲明你的obs_t不同,這樣的:

typedef struct {     
    obsd_t data;  
} obs_t; 

請如何指針熟悉努力工作,以便將來避免出現此類問題。