Bu yazımızda pointer dizilere değineceğiz.Pointer diziler yaygın olarak string dizilerde kullanılmaktadır.Bir örnekle gösterecek olursak şöyle;
char *ptr[] = {“Ali”,”Veli”,”Fatma”,”Ayşe”};
Bu dizinin çıktısını iki farklı şekilde alabiliriz.
1)Pointer parametresi kullanarak, “ *ptr ” dizinin ilk değerini referans etmektedir.
printf( “ %s\n ” , *ptr);
Çıktı->Ali
printf(“ %s\n ” , *(ptr+1));
Çıktı->Veli
-
2)Normal dizilerdeki gibi eleman numarası kullanarak.
printf( “ %s\n ” , ptr[0]);
Çıktı->Ali
printf( “ %s\n ” , ptr[1]);
Çıktı->Veli
Bir uygulamayla daha da pekiştirelim;
[cc lang=”c”]
#include
#include
#include
void karistir(int deste1[][13]);
void dagit(int deste1[][13],char *yuz1[],char *takim1[]);
int main(void) {
char *takim[4] = {“Kupa”,”Karo”,”Sinek”,”Maca”};
char *yuz[13] = {“As”,”Iki”,”Uc”,”Dort”,
“Bes”,”Alti”,”Yedi”,”Sekiz”,
“Dokuz”,”On”,”Vale”,”Kiz”,”Papaz”};
int deste[4][13] = { 0 };
srand( time(0) );
karistir(deste);
dagit(deste,yuz,takim);
system(“pause”);
return 0;
}
void karistir(int deste1[][13]) {
int satir;
int sutun;
for (int kart = 1;kart <= 52; kart++) {
do {
satir = rand() % 4;
sutun = rand() % 13;
} while (deste1[satir][sutun] != 0);//Aynı tip karttan birden fazla olmaması için
deste1[satir][sutun] = kart;
}
}
void dagit(int deste1[][13], char *yuz1[], char *takim1[]) {
int satir;
int sutun;
for (int kart = 1; kart <= 52; kart++) {
for (satir = 0; satir < 4; satir++) {
for (sutun = 0; sutun < 13; sutun++) {
if (deste1[satir][sutun] == kart) {
printf("%-8s%5s | ",takim1[satir], yuz1[sutun]);
if (kart % 4 == 0)
printf("\n");
}
}
}
}
}
[/cc]
Çıktı;
Evet arkadaşlar bu örneğimizde ilk olarak karistir() ve dagit() adında iki tane fonksiyon tanımladık.
Main fonksiyonumuz da yuz[] ve takim[] adında iki tane pointer dizi ve kartlar karıştırıldığında hangi çiftin geldiğini tutmak için deste[][] adında bir matris oluşturduk.
srand( time(0) ) fonksiyonu rastgele sayı üretmesi için time.h kütüphanesinden dahil edilmiştir.
satir = rand() % 4; –>0-3 arasında her seferinde rastgele sayı üret. sutun = rand() % 13; –>0-12 arasında her seferinde rastgele sayı üret.
Main fonksiyonunda ilk olarak karistir() fonksiyonu çağırılarak kartlar karıştırılmıştır.Daha sonra dagit() fonksiyonu ile kartların çıktısı alınmıştır
İlk yorum yapan olun