Neste tutorial, você aprenderá a passar endereços e ponteiros como argumentos para funções com a ajuda de exemplos.
Na programação C, também é possível passar endereços como argumentos para funções.
Para aceitar esses endereços na definição da função, podemos usar ponteiros. É porque os ponteiros são usados para armazenar endereços. Vamos dar um exemplo:
Exemplo: Passe endereços para funções
#include void swap(int *n1, int *n2); int main() ( int num1 = 5, num2 = 10; // address of num1 and num2 is passed swap( &num1, &num2); printf("num1 = %d", num1); printf("num2 = %d", num2); return 0; ) void swap(int* n1, int* n2) ( int temp; temp = *n1; *n1 = *n2; *n2 = temp; )
Quando você executa o programa, a saída será:
num1 = 10 num2 = 5
Os endereços de num1 e num2 são passados para a swap()
função usando swap(&num1, &num2);
.
Os ponteiros n1 e n2 aceitam esses argumentos na definição da função.
void swap(int* n1, int* n2) (… )
Quando * n1 e * n2 são alterados dentro da swap()
função, num1 e num2 dentro da função main () também são alterados.
Dentro da swap()
função, *n1
e *n2
trocado. Portanto, num1 e num2 também são trocados.
Observe que swap()
não está retornando nada; seu tipo de retorno é void
.
Exemplo 2: Passando ponteiros para funções
#include void addOne(int* ptr) ( (*ptr)++; // adding 1 to *ptr ) int main() ( int* p, i = 10; p = &i; addOne(p); printf("%d", *p); // 11 return 0; )
Aqui, o valor armazenado em p,, *p
é 10 inicialmente.
Em seguida, passamos o ponteiro p para a addOne()
função. O ponteiro ptr obtém esse endereço na addOne()
função.
Dentro da função, aumentamos o valor armazenado em ptr em 1 usando (*ptr)++;
. Como os ponteiros ptr e p têm o mesmo endereço, *p
dentro main()
também é 11.