I denne opplæringen lærer du å sende adresser og pekere som argumenter til funksjoner ved hjelp av eksempler.
I C-programmering er det også mulig å sende adresser som argumenter til funksjoner.
For å godta disse adressene i funksjonsdefinisjonen, kan vi bruke pekere. Det er fordi pekere brukes til å lagre adresser. La oss ta et eksempel:
Eksempel: Send adresser til funksjoner
#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 kjører programmet, vil utdataene være:
num1 = 10 num2 = 5
Adressen til num1 og num2 overføres til swap()
funksjonen ved hjelp av swap(&num1, &num2);
.
Pekere n1 og n2 godtar disse argumentene i funksjonsdefinisjonen.
void swap(int* n1, int* n2) (… )
Når * n1 og * n2 endres inne i swap()
funksjonen, endres også num1 og num2 inne i hovedfunksjonen ().
Inne i swap()
funksjonen, *n1
og *n2
byttet. Derfor byttes også num1 og num2 ut.
Legg merke til at swap()
det ikke returnerer noe; dens returtype er void
.
Eksempel 2: Overføring av pekere til funksjoner
#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 verdien som er lagret ved p *p
,, i utgangspunktet 10.
Vi sendte deretter pekeren p til addOne()
funksjonen. Ptr-pekeren får denne adressen i addOne()
funksjonen.
Inne i funksjonen økte vi verdien lagret på ptr med 1 ved hjelp av (*ptr)++;
. Siden ptr og p-pekere begge har samme adresse, er *p
innsiden main()
også 11.