C Treceți adresele și indicatoarele către funcții

În acest tutorial, veți învăța să transmiteți adrese și indicii ca argumente către funcții cu ajutorul exemplelor.

În programarea C, este de asemenea posibil să trimiți adrese ca argumente către funcții.

Pentru a accepta aceste adrese în definiția funcției, putem folosi indicatori. Acest lucru se datorează faptului că indicii sunt folosiți pentru a stoca adrese. Să luăm un exemplu:

Exemplu: Transferați adresele către funcții

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

Când rulați programul, ieșirea va fi:

 num1 = 10 num2 = 5

Adresa num1 și num2 sunt transmise swap()funcției folosind swap(&num1, &num2);.

Indicatorii n1 și n2 acceptă aceste argumente în definiția funcției.

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

Când * n1 și * n2 sunt modificate în interiorul swap()funcției, num1 și num2 în funcția main () sunt de asemenea modificate.

În interiorul swap()funcției *n1și *n2schimbat. Prin urmare, num1 și num2 sunt, de asemenea, schimbate.

Observați că swap()nu se returnează nimic; tipul său de returnare este void.

Exemplul 2: trecerea indicatorilor către funcții

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

Aici, valoarea stocată la p *p,, este 10 inițial.

Am trecut apoi indicatorul p la addOne()funcție. Pointerul ptr primește această adresă în addOne()funcție.

În interiorul funcției, am mărit valoarea stocată la ptr cu 1 folosind (*ptr)++;. Deoarece indicii ptr și p au ambele aceeași adresă, *pinteriorul main()este, de asemenea, 11.

Articole interesante...