▃ ▅ ησ ♥ яєѕρєcт ▅ ▃
Süper Üye
void Tipindeki Göstericiler
void göstericiler herhangi bir veri tipine ait olmayan göstericilerdir. Bu özelliğinden dolayı, void gösterici genel gösterici (generic pointer) olarak da adlandırılır.
void göstericiler, void anahtar sözcüğü ile bildirilir. Örneğin:
void *adr;
gibi.
void göstericiler yalnızca adres saklamak için kullanılır. Bu yüzden diğer göstericiler arasında atama işlemlerinde kullanılabilir. Örneğin aşağıdaki atamada derleyici bir uyarı veya hata mesajı vermez:
void *v;
char *c;
.
.
.
v = c; /* sorun yok !*/
Program 11.10'de void tipindeki bir göstericinin, program içinde, farklı tipteki verileri nasıl göstereceği ve kullanılacağı örneklenmiştir. İnceleyiniz.
01:
02:
03:
04:
05:
06:
07:
08:
09:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
/* 10prg10.c: void gosterici (generic pointer) uygulamasi */
#include <stdio.h>
int main()
{
char kar = 'a';
int tam = 66;
double ger = 1.2;
void *veri;
veri = &kar;
printf("veri -> kar: veri %c karakter degerini gosteriyor\n", *(char *) veri);
veri = &tam;
printf("veri -> tam: simdi veri %d tamsayi degerini gosteriyor\n", *(int *) veri);
veri = &ger;
printf("veri -> ger: simdi de veri %lf gercel sayi degerini gosteriyor\n", *(double *) veri);
return 0;
}
ÇIKTI
veri -> kar: veri a karakter degerini gosteriyor
veri -> tam: simdi veri 66 tamsayi degerini gosteriyor
veri -> ger: simdi de veri 1.200000 gercel sayi degerini gosteriyor
Benzer olarak, fonksiyon parameterelerinin kopyalanması sırasında da bu türden atama işlemleri kullanılabilir. Uygulamada, tipten bağımsız adres işlemlerinin yapıldığı fonksiyonlarda, parametre değişkeni olarak void göstericiler kullanılır. Örneğin
void free (void *p)
{
.
.
.
}
Parametresi void *p olan free fonksiyonu, herhangi türden gösterici ile çağrılabilir.
void göstericiler herhangi bir veri tipine ait olmayan göstericilerdir. Bu özelliğinden dolayı, void gösterici genel gösterici (generic pointer) olarak da adlandırılır.
void göstericiler, void anahtar sözcüğü ile bildirilir. Örneğin:
void *adr;
gibi.
void göstericiler yalnızca adres saklamak için kullanılır. Bu yüzden diğer göstericiler arasında atama işlemlerinde kullanılabilir. Örneğin aşağıdaki atamada derleyici bir uyarı veya hata mesajı vermez:
void *v;
char *c;
.
.
.
v = c; /* sorun yok !*/
Program 11.10'de void tipindeki bir göstericinin, program içinde, farklı tipteki verileri nasıl göstereceği ve kullanılacağı örneklenmiştir. İnceleyiniz.
Bağlantıları görmek için lütfen
Giriş Yap
void gösterici ile farklı tipteki verileri gösterme01:
02:
03:
04:
05:
06:
07:
08:
09:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
/* 10prg10.c: void gosterici (generic pointer) uygulamasi */
#include <stdio.h>
int main()
{
char kar = 'a';
int tam = 66;
double ger = 1.2;
void *veri;
veri = &kar;
printf("veri -> kar: veri %c karakter degerini gosteriyor\n", *(char *) veri);
veri = &tam;
printf("veri -> tam: simdi veri %d tamsayi degerini gosteriyor\n", *(int *) veri);
veri = &ger;
printf("veri -> ger: simdi de veri %lf gercel sayi degerini gosteriyor\n", *(double *) veri);
return 0;
}
ÇIKTI
veri -> kar: veri a karakter degerini gosteriyor
veri -> tam: simdi veri 66 tamsayi degerini gosteriyor
veri -> ger: simdi de veri 1.200000 gercel sayi degerini gosteriyor
Benzer olarak, fonksiyon parameterelerinin kopyalanması sırasında da bu türden atama işlemleri kullanılabilir. Uygulamada, tipten bağımsız adres işlemlerinin yapıldığı fonksiyonlarda, parametre değişkeni olarak void göstericiler kullanılır. Örneğin
void free (void *p)
{
.
.
.
}
Parametresi void *p olan free fonksiyonu, herhangi türden gösterici ile çağrılabilir.
Moderatörün son düzenlenenleri: