C# - Geri Dönüş Değeri Gösterici Olan Fonksiyonlar.

Geri Dönüş Değeri Gösterici Olan Fonksiyonlar Fonkiyonların geri dönüş değeri bir gösterici olabilir. Bu durumda fonksiyon bir değer değil adres döndürecek demektir. Program...

Geri Dönüş Değeri Gösterici Olan Fonksiyonlar
Fonkiyonların geri dönüş değeri bir gösterici olabilir. Bu durumda fonksiyon bir değer değil adres döndürecek demektir.
Program 11.7'da önce bir dizinin indisleri, dizi değerleri ve dizi elemanlarının adresleri ekrana basılır. Daha sonra, maxAdr(); fonksiyonu ile dizinin en büyük elemanının adresi döndürülür. Bu örnek progam, göstericilerin gücünü çok zarif bir biçimde bize sunmaktadır. Lütfen inceleyiniz.
Program 11.7: Bir dizinin en büyük elemanının adresini öğrenmek
01:
02:
03:
04:
05:
06:
07:
08:
09:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:

/* 10prg07.c: geri donus degeri gosterici olan fonksiyon */

#include <stdio.h>

double* maxAdr(double a[], int boyut){
double ebd = a[0];
double *eba = &a[0];
int i;
for(i=1; i<boyut; i++){
if(a>ebd){
ebd = a; // en büyük deger
eba = &a; // en büyük adres
}
}
return eba;
}


int main()
{
double x[6] = {1.1, 3.3, 7.1, 5.4, 0.2, -1.5};
double *p;
int k;
// indis, dizi ve adresini ekrana bas
for(k=0; k<6; k++){
printf("%d %lf %p\n", k, x[k], &x[k]);
}

p = maxAdr(x,6);

printf("En büyük deger: %lf\n", *p);
printf("En büyük adres: %p \n", p);
printf("En büyük konum: %d \n", int(p-&x[0]));

return 0;
}

Dizi elemanları 21. satırda belirlenir. Bu dizinin indisleri, değerleri ve adresleri 26. satırda ekrana basılmıştır. En büyük elemanın adresi 29. satırdaki p = maxAdr(a,6); ile pgöstericisine atanmıştır. 5. satırda bildirilen maxAdr(); fonksiyonu, en büyük elemanın adresini hesaplayıp çağrılan yere gönderir. Burada dikkat edilmesi gereken husus, fonksiyonun dönüş değerinin yerel eba göstericisi olmasıdır. eba göstericisi 12. satırda hesaplanan ve fonksiyon parametersi olan dizinin en büyük elemanın adresini tutmaktadır. Son olarak, fonksiyon çağırıldıktan sonra, p göstericisin gösterdiği değer, tuttuğu adres ve dizinin birinci elemanına göre konumu (indisi) ekrana basılmıştır. Indis hesabı int(p-&x[0]) işlemi ile yapılabilir. Bu aslında, p göstericisin tuttuğu adres ile dizinin ilk elemanının adresi arasındaki farktır. Sonuç yine bir adres olduğu için tamsayı değer elde etmek için int() takısı kullanılmıştır. Netice itibarıyla bir fonksiyon ile üç şey aynı anda öğrenilmiş olur.
ÇIKTI

0 1.100000 0x7fff41b29ec0
1 3.300000 0x7fff41b29ec8
2 7.100000 0x7fff41b29ed0
3 5.400000 0x7fff41b29ed8
4 0.200000 0x7fff41b29ee0
5 -1.500000 0x7fff41b29ee8

En büyük deger: 7.100000
En büyük adres: 0x7fff41b29ed0
En büyük konum: 2
 
💬 SpyHackerz Telegram — Anlık tartışmalar ve duyurular için katıl
132,019Konular
3,274,165Mesajlar
316,781Kullanıcılar
matizkeeeSon Üye
Üst Alt