Endereços e ponteiros de passagem C
Endereços e ponteiros da passagem C
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:passar endereços para funções
#include <stdio.h>
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\n", num1);
printf("num2 = %d", num2);
return 0;
}
void swap(int* n1, int* n2)
{
int temp;
temp = *n1;
*n1 = *n2;
*n2 = temp;
}
Ao executar o programa, a saída será:
num1 = 10 num2 = 5
O endereço de num1 e num2 são passados para o
swap()
função usando swap(&num1, &num2);
. Ponteiros n1 e n2 aceite esses argumentos na definição da função.
void swap(int* n1, int* n2) {
... ..
}
Quando *n1 e *n2 são alterados dentro do
swap()
função, num1 e num2 dentro do main() função também são alteradas. Dentro do
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 <stdio.h>
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. Passamos então o ponteiro p para o
addOne()
função. O ptr ponteiro obtém este endereço no addOne()
função. Dentro da função, aumentamos o valor armazenado em ptr por 1 usando
(*ptr)++;
. Desde ptr e p ponteiros têm o mesmo endereço, *p
dentro de main()
também é 11. Linguagem C