Arama butonu
Bu konudaki kullanıcılar: 1 misafir
3
Cevap
1451
Tıklama
0
Öne Çıkarma
C pointerlar hakkında
K
12 yıl
Binbaşı
Konu Sahibi

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



D
12 yıl
Binbaşı

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ı


Bu mesaja 1 cevap geldi.
F
12 yıl
Yüzbaşı

 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 >
Bu mesaja 1 cevap geldi.
K
12 yıl
Binbaşı
Konu Sahibi

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



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.