Ebben az oktatóanyagban megtanulhatja példák segítségével átadni a címeket és mutatókat argumentumként a függvényeknek.
A C programozásban lehetőség van arra is, hogy a címeket argumentumként továbbítsuk a függvényekhez.
Ezeknek a címeknek a függvénydefinícióban való elfogadásához mutatókat használhatunk. Ez azért van, mert a mutatókat a címek tárolására használják. Vegyünk egy példát:
Példa: Adja meg a címeket a függvényeknek
#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; )
A program futtatásakor a kimenet a következő lesz:
num1 = 10 num2 = 5
A num1 és a num2 címét a funkcióval adjuk át a swap()
függvénynek swap(&num1, &num2);
.
Az n1 és n2 mutatók elfogadják ezeket az argumentumokat a függvénydefinícióban.
void swap(int* n1, int* n2) (… )
Ha * n1 és * n2 megváltozik a swap()
függvényen belül , akkor a main1 és a num2 a main () függvényen belül is megváltozik.
A swap()
funkcióban, *n1
és *n2
felcserélték. Ezért a num1 és a num2 is felcserélődik.
Figyelje meg, hogy swap()
nem hoz semmit; visszatérési típusa az void
.
2. példa: Mutatók átadása funkcióknak
#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; )
Itt a p, értéken tárolt érték *p
kezdetben 10.
Ezután a p mutatót átadtuk a addOne()
függvénynek. A ptr mutató ezt a címet kapja meg a addOne()
függvényben.
A függvényen belül a ptr-n tárolt értéket 1-gyel növeltük a használatával (*ptr)++;
. Mivel a ptr és a p mutatónak is ugyanaz a címe, a *p
belső main()
rész is 11.