2016-10-06 3 views
1

세 함수가 있는데, 각각 다음 함수를 호출하고 일부 값을 전달합니다. 이상하게도 두 번째 함수에서 세 번째 함수를 여러 번 호출하면 호출간에 값 중 하나가 변경됩니다. 그리고이 변수는 확실히 로컬입니다. 내가 누락 되었습니까?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 
    } 
+0

예제에서 functionC를 한 번만 호출하면됩니다. – Willwsharp

+0

죄송합니다. 업데이트 된 질문/코드 – aVC

+1

두 번째 호출 후에 'i'를 다시 인쇄하십시오. – acornagl

답변

0

어느 당신이 주변에 몇 가지 포인터를 전달하는 또는 functionC 메모리와 펑키 물건을하고있다. 이 두 가지 옵션 외에도, 변수의 값이 사용자의 예제 에서처럼 단순히 변경되는 이유를 알 수있는 진정한 이유는 없습니다.

+1

'functionC()'프로 시저 코드를 제공하지 않으면 도움이된다고 동의합니다 – acornagl

+0

@acornagl 죄송합니다. 코드가 너무 커서 죄송합니다. 구조를 보여 드리고 싶습니다. 내 실수. 코드를 업데이트했습니다. 또한 놀고 난 후에 약간의 발견. – aVC

+0

@aVC, 우리가 당신을 도우려고 노력하는 것에 대해 걱정하지 마십시오. 답변을 얻으려는 모든 필요한 정보를 제공해 주셨으면합니다.) – acornagl

관련 문제