Endereços de passagem C e indicadores de funções

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, *n1e *n2trocado. 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, *pdentro main()também é 11.

Artigos interessantes...