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 Desafio
FácilNo código fornecido, definimos uma variável chamada y.
- Escreva uma função
squareque 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
squarequanto na funçãomainpara 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;
}