Search code examples
functionarduinoglobal-variables

How do i change global boolean inside a function?


Hello :D As a practice for Arduino, I'm trying to make a function that I can re-use to change global variables inside the loop function. So for example, I have two global booleans answer1 and answer2, and I have a void function that have boolean as an input. However, when I run the code, the global variables are not changing, and I'm sure what I am not understanding correctly.

bool answer1, answer2;

void setup() {
  answer1 = false;
  answer2 = false;
}

void loop() {    
  grading(answer1);
  grading(answer2);
}

void grading(bool _answer)
{
  _answer = true;
}

Solution

  • Use references.

    bool answer1, answer2;
    
    void setup() {
      answer1 = false;
      answer2 = false;
    }
    
    void loop() {    
      grading(answer1);
      grading(answer2);
    }
    
    void grading(bool& _answer)
    {
      _answer = true;
    }
    

    ...or pointers.

    bool answer1, answer2;
    
    void setup() {
      answer1 = false;
      answer2 = false;
    }
    
    void loop() {    
      grading(&answer1);
      grading(&answer2);
    }
    
    void grading(bool* _answer)
    {
      *_answer = true;
    }