2011-05-12 55 views
0
struct STATE{ 
    uint8 bit; 
    uint8 cop; 
} 
STATE *state_array[1024]; 

state_aray[0]->bit = 8;  
state_aray[0].cop = 8; 
state_aray[1]->bit = 0;  
state_aray[1].cop = state_aray[1]->bit & 8 != state_aray[0]->bit & 8 
state_aray[2]->bit = 12; 
state_aray[2].cop = state_aray[1]->bit & 8 != state_aray[0]->bit & 8 && state_aray[2]->bit & 8 != state_aray[1]->bit & 8 
state_aray[3]->bit = 0;  
state_aray[3].cop = state_aray[1]->bit & 8 != state_aray[0]->bit & 8 && state_aray[2]->bit & 8 != state_aray[1]->bit & 8 && state_aray[3]->bit & 8 != state_aray[2]->bit & 8 
state_aray[4]->bit = 8;  
state_aray[4].cop = ... 

state_aray[5].cop = ... ... 
... 
state_aray[100].cop = ... ...... ......... ....... ......... ....... ...... ....... ............... ........ ...... ............ .... ......... ...... .. 


 

是有沒有辦法只使用state_aray [I-1] - >警察和state_aray [I-1] - >位和state_aray [I] - >位獲得state_aray [I] - >警察?如何跟蹤C中的結構成員值更改?

tks

+3

請重新表述您的問題。我不知道你在做什麼。 – 2011-05-12 01:11:30

+2

回滾最後一次編輯。如果有多個答案,問題不能被刪除。參見[這裏](http://meta.stackexchange.com/questions/5221/what-c​​an-cause-a-post-to-be-deleted-and-what-does-that-actually-mean/5222#5222 )。 – 2011-05-12 02:28:21

+0

,如果你的問題可以刪除,有剛下標籤框「C」「刪除」鏈接。我不確定這些規則是否發生了變化,如果有答案,或答案是贊成票,那麼問題就不能被刪除。您也可以考慮標記版主,並要求他們爲您刪除。如果問題不能被刪除,最好讓它可見,可能更好地解釋你想要做什麼。 – 2011-05-12 02:35:33

回答

0

不起作用。有沒有「我是這個結構中的一員,」在C機制,而不是面向對象的「本」或「自我」的概念。 這就是爲什麼在c您只需隱藏你的結構實現和提供的功能來改變你悄悄設置其他值的值。

STATE *create_state(void) 
{ 
    STATE *retval; 

    if((retval = malloc(sizeof(STATE))) == NULL) 
     return NULL; 
    retval->cop = -1; 
    retval->bit = 0; 
    return retval; 
} 

void set_state(STATE *st, int val) 
{ 
    st->bit = val; 
    st->cop++; 
} 

int has_state_changed(STATE *st) 
{ 
    return st->cop; 
}