Nasil C de İşaretçiler
From Lapis Wiki
İşretçiler C'nin en önemli özelliklerinden biridir. Öyleki işaretçiler C dilini makine diline benzeten önemli bir özelliktir. İşaretçiler adres saklar ve böylece adresler vasıtasıyla verilere erişmek ve değiştirmek mümkün olur.
int *pointer; //şeklinde tanımlanır
| Kod: |
#include <stdio.h>
#include <string.h>
main(){
char *p,i;
char dizi[]="Merhaba linux-sevenler";
p=dizi;
for (i=0;i<strlen(dizi);i++)
printf("%c",*(p++));
}
|
veya aynı işlevi yapan başka bir program
| Kod: |
#include <stdio.h>
#include <string.h>
main(){
char *p;
char dizi[]="Merhaba linux-sevenler";
p=dizi;
while(*p){
printf("%c",*(p++));
}
}
|
Burda "p=dizi" denilmiştir çünkü dizi ifadesi o dizinin ilk adresini tutar. Diğer değişkenler için
p=°isken ; // şeklinde adresi alınır
Bir önceki konudaki gün bulma programını göstergeler ile yapalım.
| Kod: |
#include <stdio.h>
#include <time.h>
struct tm *zaman;
time_t zaman_;
main(){
int a;
char *p[]={"Pazar","Pazartesi","Salı","Çarşamaba","Perşembe","Cuma","Cumartesi"};
zaman_=time(NULL); //Güncel zaman alınır
zaman=localtime(&zaman_); //Yerel zamana çevrilir
a=zaman->tm_wday; //Gün bilgisi alınır (0-6 arasında bir değerdir)
printf("%s\n",p[a]);
}
|
Burada göstergenin bir dizi olarak tanımlanmasını görmekteyiz. Böylece switch yapısını kullanmamıza gerek kalmadı ve programı daha kısa daha hızlı çalışır hale getirmiş olduk.
