C’DE POINTER DİZİLER

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

Bir yanıt bırakın