首页 > 解决方案 > 通过C中的多种方法通过引用传递 - 值丢失

问题描述

我有多个通过引用传递变量的嵌套方法,但引用似乎在堆栈中的某个地方丢失了,而是创建了值的副本,因此值不会更新。

这是我的 C 代码:

方法_1.c,方法_2.c,方法_3.c,方法_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);
  }
}

主.c:

uint8_t signal = 0;

main() {
  method_1(&signal);

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

如何正确地通过这多个方法传递引用,以便在主函数中更改变量时,所有方法都可以看到更改?

标签: creferencepass-by-reference

解决方案


推荐阅读