C Passa indirizzi e puntatori alle funzioni

In questo tutorial imparerai a passare indirizzi e puntatori come argomenti alle funzioni con l'aiuto di esempi.

Nella programmazione C, è anche possibile passare indirizzi come argomenti alle funzioni.

Per accettare questi indirizzi nella definizione della funzione, possiamo usare i puntatori. È perché i puntatori vengono utilizzati per memorizzare gli indirizzi. Facciamo un esempio:

Esempio: passare indirizzi a funzioni

 #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 esegui il programma, l'output sarà:

 num1 = 10 num2 = 5

Gli indirizzi di num1 e num2 vengono passati alla swap()funzione utilizzando swap(&num1, &num2);.

I puntatori n1 e n2 accettano questi argomenti nella definizione della funzione.

 void swap(int* n1, int* n2) (… ) 

Quando * n1 e * n2 vengono modificati all'interno della swap()funzione, vengono modificati anche num1 e num2 all'interno della funzione main ().

All'interno della swap()funzione *n1e *n2scambiati. Quindi, anche num1 e num2 vengono scambiati.

Notare che swap()non sta restituendo nulla; il suo tipo restituito è void.

Esempio 2: passaggio di puntatori alle funzioni

 #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; )

Qui, il valore memorizzato in p,, *pè inizialmente 10.

Abbiamo quindi passato il puntatore p alla addOne()funzione. Il puntatore ptr ottiene questo indirizzo nella addOne()funzione.

All'interno della funzione, abbiamo aumentato il valore memorizzato in ptr di 1 utilizzando (*ptr)++;. Poiché i puntatori ptr e p hanno entrambi lo stesso indirizzo, anche *pall'interno main()è 11.

Articoli interessanti...