C Adja meg a címeket és mutatókat a függvényeknek

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 *n2felcseré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 *pkezdetben 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 *pbelső main()rész is 11.

érdekes cikkek...