ExpertiDict

C · Essencial · Português · Técnico

passagem por valor

/paˈsa.ʒẽj poɾ vaˈloɾ/substantivo

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

Veja também

Todos os termos de C