SOBRE

LightBlog
Responsive Ads Here

sexta-feira, 9 de janeiro de 2015

#16 Passagem de Valor por Referência e Parâmetro no Arduino

A passagem de valor por parâmetro, funciona da seguinte maneira:
* Uma função é declarada e nela possuí uma variável, como por exemplo:
void imprimir (int valor);
* Quando chamada essa função, será necessário passar um valor do mesmo tipo que a função exige, por exemplo:

void loop(){
    int valor = 5;
    imprimir (valor);
    imprimir (5);
}
* Nos dois casos mostrado acima estão corretos, tanto passando uma variável, como passando um valor direto. A diferença da passagem de valor por parâmetro é que neste caso, a função imprimir pode alterar o valor dentro da função, que não irá comprometer o dado real, como por exemplo:

void setup(){
    Serial.begin (9600);
}
void loop(){
    int valor = 5;
    imprimir (valor);
    Serial.print("Dentro do voidloop:");
    Serial.println(valor);
}
void imprimir (int valor){
   Serial.print("Dentro de imprimir:");
   Serial.println(valor);
   valor++;
   Serial.print("Dentro de imprimir, após incremento:");
   Serial.println(valor);
}

* Verifique o resultado final no monitor serial:



A principal diferença entre a passagem por valor e por referência, é que por referência é passado o endereço da variável para a função, permitindo assim que a função altere o valor original:


void setup (){
    Serial.begin(9600);
}

void loop(){ 
    int valor;
    valor = 5;
    Serial.print("Dentro do voidloop:");
    Serial.println(valor);
    imprimir(&valor);
    Serial.print("Dentro do voidloop, apos incremento:");
    Serial.println(valor);
}
void imprimir (int *valor){
   Serial.print("Dentro de imprimir:");
   Serial.println(*valor);
   *valor = *valor + 1;
}
* Verifique o resultado no Monitor Serial: