Tässä opetusohjelmassa opit välittämään osoitteet ja osoittimet funktioiden argumenteiksi esimerkkien avulla.
C-ohjelmoinnissa on myös mahdollista välittää osoitteet argumentteina funktioille.
Hyväksyäksemme nämä osoitteet funktion määrittelyssä, voimme käyttää osoittimia. Se johtuu siitä, että osoittimia käytetään osoitteiden tallentamiseen. Otetaan esimerkki:
Esimerkki: Osoitteiden välittäminen toiminnoille
#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; )
Kun suoritat ohjelmaa, tulos on:
num1 = 10 num2 = 5
Num1- ja num2-osoitteet välitetään swap()funktiolle käyttämällä swap(&num1, &num2);.
Osoittimet n1 ja n2 hyväksyvät nämä argumentit funktion määrittelyssä.
void swap(int* n1, int* n2) (… )
Kun * n1 ja * n2 vaihdetaan swap()toiminnon sisällä, myös pää () -funktion sisällä olevat num1 ja num2 muuttuvat.
swap()Toiminnon sisällä *n1ja *n2vaihdettu. Siksi myös num1 ja num2 vaihdetaan.
Huomaa, että swap()se ei palauta mitään; sen palautustyyppi on void.
Esimerkki 2: Osoittimien välittäminen toiminnoille
#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; )
Tässä p: lle tallennettu arvo *pon aluksi 10.
Sitten siirrimme osoittimen p addOne()funktioon. Ptr-osoitin saa tämän osoitteen addOne()funktioon.
Funktion sisällä lisäsimme ptr: ään tallennettua arvoa yhdellä käyttämällä (*ptr)++;. Koska ptr: llä ja p-osoittimella on sama osoite, *psisällä main()on myös 11.








