#c #tracking
#c #отслеживание
Вопрос:
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 amp; 8 != state_aray[0]->bit amp; 8
state_aray[2]->bit = 12;
state_aray[2].cop = state_aray[1]->bit amp; 8 != state_aray[0]->bit amp; 8 amp;amp; state_aray[2]->bit amp; 8 != state_aray[1]->bit amp; 8
state_aray[3]->bit = 0;
state_aray[3].cop = state_aray[1]->bit amp; 8 != state_aray[0]->bit amp; 8 amp;amp; state_aray[2]->bit amp; 8 != state_aray[1]->bit amp; 8 amp;amp; state_aray[3]->bit amp; 8 != state_aray[2]->bit amp; 8
state_aray[4]->bit = 8;
state_aray[4].cop = ...
state_aray[5].cop = ... ...
...
state_aray[100].cop = ... ...... ......... ....... ......... ....... ...... ....... ............... ........ ...... ............ .... ......... ...... ..
есть ли способ использовать только state_aray [i-1]-> cop и state_aray[i-1]-> bit и state_aray[i]-> bit для получения state_aray[i]-> cop?
tks
Комментарии:
1. Пожалуйста, перефразируйте свой вопрос. Я понятия не имею, что вы пытаетесь сделать.
2. Откатил вашу последнюю правку. Вопросы не могут быть удалены, если имеется более одного ответа. Смотрите здесь .
3. если ваш вопрос можно удалить, прямо под полем тега для ‘c’ есть ссылка ‘удалить’. Я не уверен, изменились ли правила так, что если есть ответы или ответы с голосами «за», то вопрос нельзя удалить. Вы также могли бы рассмотреть возможность пометить модераторов и попросить их удалить это для вас. Если вопрос не может быть удален, лучше оставить его видимым, возможно, с лучшим объяснением того, что вы пытаетесь сделать.
4. Вы должны быть последовательны в использовании ‘
.
‘ vs ‘->
‘. Учитывая, что у вас есть массив указателей, вам необходимо убедиться, что вы инициализировали эти указатели, которые в показанном коде отсутствуют. Или вам нужен простой массив ваших структур (более правдоподобный). Для первого варианта вам нужно использовать обозначение ‘->
‘; для второго варианта вам нужно использовать обозначение ‘.
‘. Кроме того, вам следует использовать несколько круглых скобок и, возможно, цикл или даже пару вложенных циклов.
Ответ №1:
Не будет работать. В 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;
}