C Adresleri ve İşaretçileri İşlevlere Geçir

Bu eğiticide, örnekler yardımıyla işlevlere argüman olarak adresleri ve işaretçileri aktarmayı öğreneceksiniz.

C programlamada, adresleri fonksiyonlara argüman olarak geçirmek de mümkündür.

Fonksiyon tanımında bu adresleri kabul etmek için işaretçiler kullanabiliriz. Bunun nedeni, adresleri saklamak için işaretçilerin kullanılmasıdır. Bir örnek alalım:

Örnek: Adresleri İşlevlere Aktarma

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

Programı çalıştırdığınızda, çıktı:

 num1 = 10 num2 = 5

Num1 ve num2'nin adresleri swap()kullanılarak işleve geçirilir swap(&num1, &num2);.

N1 ve n2 işaretçileri, fonksiyon tanımında bu argümanları kabul eder.

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

swap()İşlev içinde * n1 ve * n2 değiştirildiğinde , main () işlevinin içindeki num1 ve num2 de değişir.

swap()İşlevin içinde *n1ve *n2değiştirildi. Dolayısıyla, num1 ve num2 de değiştirilir.

swap()Hiçbir şey iade etmediğine dikkat edin ; dönüş türü void.

Örnek 2: İşaretçileri İşlevlere Aktarma

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

Burada, p, 'de saklanan değer *pbaşlangıçta 10'dur.

Daha sonra p işaretçisini addOne()işleve geçirdik. Ptr işaretçisi bu adresi addOne()işlevde alır.

Fonksiyonun içinde, ptr'de saklanan değeri 1 kullanarak artırdık (*ptr)++;. Ptr ve p işaretçilerinin her ikisi de aynı adrese sahip olduğundan, *pmain()kısım da 11'dir.

Ilginç makaleler...