我有三个函数,每个函数调用下一个函数并传递一些值。奇怪的是,在第二个函数中,我多次调用第三个函数,其中一个值在调用之间发生了变化。这个变量肯定是局部的。我错过什么了吗?
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在用内存做一些奇怪的事情。除了这两个选项之外,我不明白为什么变量中的值会像您的示例中那样简单地改变。