C · Essencial · Português · Técnico
passagem por valor
Modelo de passagem de argumentos de C: a função recebe uma cópia de cada argumento, então alterar o parâmetro não muda a variável original do chamador.
Onde usar
Para a função modificar algo do chamador, passe o endereço com um ponteiro. Structs grandes também são copiadas inteiras, por isso se costuma passá-las por ponteiro.
Em código
void incr(int x) { x++; }
void incr_p(int *x) { (*x)++; }
int main(void) {
int a = 1;
incr(a); // a continua 1
incr_p(&a); // a vira 2
}Exemplos
Em C toda passagem é por valor, até a de ponteiros.
A troca não funcionou por causa da passagem por valor; passe os endereços.
Cuidado
Dizer que C tem passagem por referência: o que existe é passar por valor o endereço de um objeto.
Sinônimos
pass by value
Antônimos
passagem por referência