C Adreses un norādes nodot funkcijām

Šajā apmācībā jūs iemācīsities nodot adreses un norādes kā argumentus funkcijām, izmantojot piemērus.

Programmējot C, ir iespējams arī adreses kā argumentus nodot funkcijām.

Lai šīs adreses pieņemtu funkcijas definīcijā, mēs varam izmantot rādītājus. Tas ir tāpēc, ka rādītāji tiek izmantoti adrešu glabāšanai. Ņemsim piemēru:

Piemērs: nodot adreses funkcijām

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

Palaidot programmu, izeja būs:

 num1 = 10 num2 = 5

Num1 un num2 adrese tiek nodota swap()funkcijai, izmantojot swap(&num1, &num2);.

Rādītāji n1 un n2 pieņem šos argumentus funkciju definīcijā.

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

Mainot * n1 un * n2 swap()funkcijas iekšienē , mainās arī num1 un num2 galvenās () funkcijas iekšienē.

swap()Funkcijas iekšpusē *n1un *n2nomainīta. Tādējādi num1 un num2 arī tiek apmainīti.

Ievērojiet, ka swap()nekas neatgriežas; tā atgriešanās veids ir void.

2. piemērs: Norāžu nodošana funkcijām

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

Šeit vērtība, kas saglabāta p,, *psākotnēji ir 10.

Pēc tam mēs novirzījām rādītāju p uz addOne()funkciju. Ptr rādītājs šo adresi iegūst addOne()funkcijā.

Funkcijas iekšpusē mēs palielinājām ptr saglabāto vērtību par 1, izmantojot (*ptr)++;. Tā kā ptr un p rādītājiem ir vienāda adrese, *piekšpusē main()ir arī 11.

Interesanti raksti...