Nasil C de İşaretçiler

From Lapis Wiki

Jump to: navigation, search

İş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=&degisken ; // ş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.