Передача по ссылке через несколько методов в C - значение потеряно - PullRequest
0 голосов
/ 07 января 2020

У меня есть несколько вложенных методов, которые передают переменную по ссылке, но ссылка кажется потерянной где-то в стеке, и вместо этого она создает копию значения, поэтому значение не обновляется.

Вот мой C код:

method_1. c, method_2. c, method_3. c, method_4. c:

uint8_t *signal_in_methods = 0;

void method_1(void *param){
  uint8_t *sig = (uint8_t*)param;
  method_2(sig);
}

void method_2(uint8_t *sig){
  method_3(sig);
}

void method_3(uint8_t *sig){
  method_4(sig);
}

void method_4(uint8_t *sig){
  signal_in_methods = *sig;
  //uses the signal_in_methods in separate thread, but this value is not updated when updated in main function
  ...
  while(1) {
    sleep(1000);
    uint8_t signal = *signal_in_methods;
    printf("%d",signal);
  }
}

main. c:

uint8_t signal = 0;

main() {
  method_1(&signal);

  while(1) {
    signal = update_signal()//this method continuously changes the value 'signal'
  }
}

Как правильно передать ссылку через эти несколько методов, чтобы при изменении переменной в основной функции изменение было видно все методы?

...