C Persiųskite adresus ir rodykles funkcijoms

Šioje pamokoje sužinosite pavyzdžių pagalba adresus ir rodykles kaip argumentus funkcijoms perduoti.

Programuojant C taip pat galima perduoti adresus kaip argumentus funkcijoms.

Norėdami priimti šiuos adresus funkcijos apibrėžime, galime naudoti rodykles. Taip yra todėl, kad žymekliai naudojami adresams saugoti. Paimkime pavyzdį:

Pavyzdys: perduokite adresus funkcijoms

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

Kai paleisite programą, išvestis bus:

 num1 = 10 num2 = 5

Num1 ir num2 adresai swap()funkcijai perduodami naudojant swap(&num1, &num2);.

Rodyklės n1 ir n2 priima šiuos argumentus funkcijos apibrėžime.

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

Kai funkcijos * n1 ir * n2 keičiamos swap()funkcijos viduje, taip pat keičiami numeriai1 ir num2 pagrindinės () funkcijos viduje.

swap()Funkcijos viduje *n1ir *n2pakeista. Taigi, num1 ir num2 taip pat keičiamos.

Atkreipkite dėmesį, kad swap()nieko negrąžina; jo grąžinimo tipas yra void.

2 pavyzdys: rodyklių perdavimas funkcijoms

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

Čia vertė, išsaugota p, *piš pradžių yra 10.

Tada mes perdavėme rodyklę p addOne()funkcijai. Ptr žymeklis šį adresą gauna addOne()funkcijoje.

Funkcijos viduje padidinome ptr įrašytą vertę 1 naudodami (*ptr)++;. Kadangi ptr ir p rodyklės turi tą patį adresą, *pviduje main()taip pat yra 11.

Įdomios straipsniai...