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ı
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.
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ı?