C Proslijedite adrese i pokazivače funkcijama

U ovom vodiču naučit ćete prosljeđivati ​​adrese i pokazivače kao argumente funkcijama uz pomoć primjera.

U programiranju na C također je moguće funkcije prosljeđivati ​​kao argumente.

Da bismo prihvatili ove adrese u definiciji funkcije, možemo koristiti pokazivače. To je zato što se pokazivači koriste za spremanje adresa. Uzmimo primjer:

Primjer: Prosljeđivanje adresa funkcijama

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

Kada pokrenete program, izlaz će biti:

 num1 = 10 num2 = 5

Adresa num1 i num2 prosljeđuju se swap()funkciji pomoću swap(&num1, &num2);.

Pokazivači n1 i n2 prihvaćaju ove argumente u definiciji funkcije.

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

Kada se unutar swap()funkcije promijene * n1 i * n2, promijene se i num1 i num2 unutar glavne () funkcije.

Unutar swap()funkcije *n1i *n2zamijenjeno. Stoga se num1 i num2 također zamjenjuju.

Primijetite da swap()ništa ne vraća; njegov je povratni tip void.

Primjer 2: Prosljeđivanje pokazivača na funkcije

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

Ovdje je vrijednost pohranjena na p, *pu početku 10.

Zatim smo proslijedili pokazivač p addOne()funkciji. Pokazivač ptr dobiva ovu adresu u addOne()funkciji.

Unutar funkcije povećali smo vrijednost pohranjenu na ptr za 1 pomoću (*ptr)++;. Budući da oba pokazivača ptr i p imaju istu adresu, *punutra main()je također 11.

Zanimljivi članci...