C Predajte naslove in kazalce funkcijam

V tej vadnici se boste s pomočjo primerov naučili predajati naslove in kazalce kot argumente funkcijam.

Pri programiranju na C je mogoče funkcije tudi predati naslove kot argumente.

Za sprejem teh naslovov v definiciji funkcije lahko uporabimo kazalce. To je zato, ker se kazalci uporabljajo za shranjevanje naslovov. Vzemimo primer:

Primer: Prenos naslovov v funkcije

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

Ko zaženete program, bo rezultat:

 num1 = 10 num2 = 5

Naslov num1 in num2 se posredujeta swap()funkciji z uporabo swap(&num1, &num2);.

Kazalca n1 in n2 sprejmeta te argumente v definiciji funkcije.

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

Ko se v swap()funkciji spremenita * n1 in * n2, se spremenita tudi num1 in num2 znotraj glavne () funkcije.

Znotraj swap()funkcije *n1in *n2zamenjana. Zato se zamenjata tudi num1 in num2.

Obvestilo, da swap()nič ne vrne; njegova vrnjena vrsta je void.

Primer 2: Prenos kazalcev 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; )

Tu je vrednost, shranjena pri p,, na *pzačetku 10.

Nato smo kazalcu p poslali addOne()funkcijo. Kazalec ptr dobi ta naslov v addOne()funkciji.

Znotraj funkcije smo z vrednostjo shranili vrednost ptr za 1 (*ptr)++;. Ker imata kazalca ptr in p enak naslov, je *pznotraj main()tudi 11.

Zanimive Članki...