C Videresend adresser og markører til funktioner

I denne vejledning lærer du at videregive adresser og markører som argumenter til funktioner ved hjælp af eksempler.

I C-programmering er det også muligt at videregive adresser som argumenter til funktioner.

For at acceptere disse adresser i funktionsdefinitionen kan vi bruge pegepinde. Det er fordi markører bruges til at gemme adresser. Lad os tage et eksempel:

Eksempel: Giv adresser til funktioner

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

Når du kører programmet, vil output være:

 num1 = 10 num2 = 5

Adressen til num1 og num2 videregives til swap()funktionen ved hjælp af swap(&num1, &num2);.

Markører n1 og n2 accepterer disse argumenter i funktionsdefinitionen.

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

Når * n1 og * n2 ændres inde i swap()funktionen, ændres num1 og num2 inde i hovedfunktionen () også.

Inde i swap()funktionen *n1og *n2byttede. Derfor udskiftes også num1 og num2.

Bemærk, at swap()det ikke returnerer noget; dens returtype er void.

Eksempel 2: Videresendelse af markører til funktioner

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

Her er værdien lagret ved p *p,, oprindeligt 10.

Vi sendte derefter markøren p til addOne()funktionen. Ptr-markøren får denne adresse i addOne()funktionen.

Inde i funktionen øgede vi værdien, der var gemt på ptr med 1 ved hjælp af (*ptr)++;. Da ptr og p-markører begge har den samme adresse, er *pindersiden main()også 11.

Interessante artikler...