Şimdi Ara

C pointerlar hakkında

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
1 Misafir - 1 Masaüstü
5 sn
4
Cevap
0
Favori
1.230
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • struct label{
    int x;
    int y;
    char *s;
    int len;
    };

    struct label *lb;

    lb = &Text[IDXGAMENAME];
    lb->len = strlen(titletext[IDXGAMENAME]);
    lb->s = titletext[IDXGAMENAME];
    lb->y = TITLE_Y;
    lb->x = bcenter(lb->len);


    Benim sorum pointer olarak -> kullanıyorlar fakat ben kullanımını tam olarak anlamadım. Bu kullanımı hakkında bilgisi olan ve açıklayabilecek olan var mı?



  • struct label *lb; satırında label türünde bi pointer tanımlamış. Eğer Java, C# gibi dilleri biaz kullanmışsan label türünde lb adında bi nesne oluşturmuş gibi düşünebilirsin. Orda -> simgesi Java ya da C# taki . gibi.

    lb->y = TITLE_Y; lb'nin y alanına TITLE_Y ata anlamına geliyor.

    Kusura bakmayın, net anlatamamış olabilirim Sadece bilmeniz gereken -> = Soldakinin sağ alanı
  •  struct label{ 
    int x;
    int y;
    char *s;
    int len;
    };



    lb = &Text[IDXGAMENAME];
    lb->len = strlen(titletext[IDXGAMENAME]);
    lb->s = titletext[IDXGAMENAME];
    lb->y = TITLE_Y;
    lb->x = bcenter(lb->len);




    Sizin alıntı yapmış olduğunuz kod parçasında "label" türünde bir pointer(işarteci) oluşturlumuş.

    Buradaki amac daha önce label türünde oluşturulmuş "static struct label Text[16]" dizisine,aynı türden "struct label *lb" işaretcisine adres ataması yapmak.

    Yukarıdaki kod parçacığında bu işlem "lb = &Text[IDXGAMENAME];" şeklinde yapılmıştır.

    Bu bir tekniktir.Bu şekilde Text[]dizisinin içinde bulunan "struct label" lerin üye elemanların (len,s,y,x) değerini değiştirebiliyorsunuz.


    Burdaki "IDXGAMENAME" bir enum değeridir.Hem isim hem de sabit bir int değerini ifade eder.Bu şekilde dizinin elemanlarına örneğin:Text[0] yerine Text[IDXGAMENAME] şeklinde yazarak erişebilirsiniz.


    "struct label *lb;" constant pointer olmadığı için ,aynı türden olmak üzere yeni adres ataması yapabilirsiniz.

    Pointer'larda adresin gösterdiği nesnenin üye elamanlarına "." ile değil "->" işareti ile erişilir.




    Kod


    Edit:....



    < Bu mesaj bu kişi tarafından değiştirildi fenasi44 -- 26 Nisan 2013; 13:19:41 >




  • quote:

    Orijinalden alıntı: fenasi44



    quote:

    Orijinalden alıntı: smallhero55

    @fenasi44
    @smallhero55

    Biraz geç oldu ama 2nize de cevaplarınız için teşekkürler. Öğrenmek istediğimi öğrendim
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.