Menu
Coddy logo textTech

Valor vs. Ponteiro

Lição 7 de 17 do curso Funções em C da Coddy.

Quando passamos parâmetros para uma função, podemos fazer isso de duas maneiras: por valor ou por ponteiro. Vamos dar um exemplo simples para entender o que queremos dizer com valor e ponteiro:

#include <stdio.h>

void sum(int a) {
   a = a + 1;
   printf("sum function: %d\n", a);
}

int main(void) {
   int a = 10;
   sum(a);
   printf("main function: %d\n", a);
   return 0;
}

A saída:

sum function: 11 
main function: 10 

Como você pode ver neste exemplo, usamos o valor, então o valor da variável a não mudou. No entanto, se precisarmos acessar a variável e alterar seu valor, podemos usar um ponteiro como parâmetro.

#include <stdio.h>

void sum(int *a) {
   *a = *a + 1;
   printf("sum function: %d\n", *a);
}

int main(void) {
   int a = 10;
   sum(&a);
   printf("main function: %d\n", a);
   return 0;
}

Como a função agora aceita um ponteiro como parâmetro, quando ela é chamada, você deve passar o endereço da variável:

sum(&a);

A saída:

sum function: 11 
main function: 11 
challenge icon

Desafio

Fácil

No código fornecido, definimos uma variável chamada y.

  • Escreva uma função square que receba um ponteiro para um inteiro como seu parâmetro.
  • Dentro desta função, eleve ao quadrado o valor da variável para a qual o ponteiro aponta e imprima seu valor.
  • Imprima o valor da variável tanto na função square quanto na função main para mostrar que a variável original foi alterada.

Experimente você mesmo

#include <stdio.h>


// Função square para elevar o valor ao quadrado por ponteiro
 
int main(void) {

    int a = 200;
    
    // Chama a função square
     
    // Imprime a variável original 
    
    return 0;
}

Todas as lições de Funções em C