C语言 Arduino函数变量值在函数调用之间的变化



我有三个函数,每个函数调用下一个函数并传递一些值。奇怪的是,在第二个函数中,我多次调用第三个函数,其中一个值在调用之间发生了变化。这个变量肯定是局部的。我错过什么了吗?

void functionA(...){
  //Something...
  int i=1,j=1,k=2;
  functionB(i,j,k);
}
void functionB(int i,int j,int k){
  String X="";
  Serial.print(i);//Gives 1
  if(j==1)
    X="hello world";
  functionC(i,j,k,X);//Call 1 to functionC
  Serial.print(i);//Gives 0 !!!!!!!!!!!!!!!!!!!!!!!!
  if(j==2)
    X="hello world2";
  functionC(i,j,k,X);//Call 2 to functionC
}
void functionC(int i, int j, int k, String X){
   if(i) 
     //Do something
   else 
     //Do somethingelse
}

我的实验

void functionC(int i, int j, int k, String X){
       //Print i here. No difference with the result.
       if(i) 
         //Do something
       else 
         //Do somethingelse
       //But if I Print i here again, then it is working. As in, "i" does not change anymore. between each call to functionC
    }

要么你在传递一些指针,要么函数c在用内存做一些奇怪的事情。除了这两个选项之外,我不明白为什么变量中的值会像您的示例中那样简单地改变。

最新更新