[]

c programlama dilinde pointerlar?

void main(){
typedef struct PERSON {
int sicil;
char ad[15];
char soyad[20];
float brut;
int yas;
int cins;
} PERS;
PERS kisi;
PERS *p;
p=&kisi;
kisi.sicil=1;
strcpy(kisi.ad,"ahmet");
strcpy(kisi.soyad,"veli");
kisi.brut=5000;
kisi.yas=34;
kisi.cins=1;
printf("\n %d %s %s %f %d %d",kisi.sicil, kisi.ad, kisi.soyad, kisi.brut, kisi.yas, kisi.cins);
printf("\n %d %s %s %f %d %d",(*p).sicil, (*p).ad, (*p).soyad, (*p).brut, (*p).yas, (*p).cins);
printf("\n %d %s %s %f %d %d",p->sicil, p->ad, p->soyad, p->brut, p->yas,p->cins);
getch();



şöyle bir algoritmamız var örnek burda üç çıktıda aynı şeyi veriyor zaten son iki pointerın farklı yazım hali peki 1. ile 2 ve 3 ün farkı nedir ya ne diye pointer kullanıyoruz kullansak ne kazanızırız kullanmasak?

 
2 ile 3 aynı şey aslında. farklı gösterimler.

bu örnek pointer ın kullanımıyla ilgili,pointer ların amacını göstermiyor.

en basitinden bir fonksiyon sadece bir değer/değişken return edebilir. pointer ler sayesinde bu kısıtlamadan kurtuluyoruz.
  • lehim ve havya ile mikrocip yapan adam  (06.03.12 23:19:14) 
*p'de bir fiziksel adres yazar. zaten direkt *p'nin printini almaya kalktığında sana bir fiziksel adres döndürür hexadecimal olarak, *p'de tutulan fiziksel adreste belirtilen yerde ne varsa ona ulaşır. sen p'ye bir şey atamaya kalktığında o adrese gidip o istediğin şeyi yazar.

direkt olarak *p'ye bir şey yazmaya kalktığında sadece adres yazabilirsin. ama p-> üzerinden kullanmaya kalktığında o strcut'ın o adresteki node'una yazarsın istediğini, adreslemeyle alakan olmaz. p'yi pers *p değil, kisi'de olduğu gibi pers p olarak tanımlasaydın örneğin p = kişi; desen aynı yapıdaki kisi'yi p'ye kopyalardı.

şimdi diyeceksin ki neden adreslerle uğraşıyorum? öğrencisin herhalde, biraz sabırlı ol, ileride daha karmaşık veri yapılarını gördüğünde neden kullanıldığını anlayacaksın. çünkü c ve c++ kullandığında linked list'lere bir şekilde bulaşacaksın ve bu dallanıp budaklanacak. o linked listler içinde dört bir yana hareket etmek isteyeceksin, bunları bilmeden ve anlamadan da onu yapamazsın.
  • uckac  (07.03.12 08:53:12) 
1
buraya yazılanların hakları Sir Anthony Hopkins'e aittir.
yazan eden compumaster, ilgilenen eden fader
modere edenler angelus, Artibir, aychovsky, baba jo, basond, compumaster, deckard, duyulmasi gerektigi kadar, fader, fraise, groove salad, kahvegibi, kaymaktutmayansicaksut, kibritsuyu, monstro, pandispanya, robin, ron dennis
bu sitede yazılanların hiçbiri doğru değildir. site içeriği küçükler için sakıncalı olabilir. yazılardan yazarları sorumludur. kaynak göstermeden alıntılanamaz. devlet tarafından atanmış bir kurumun internet üzerinde kimin hangi bilgiye ulaşıp ulaşamayacağına karar vermesi insan haklarına aykırıdır. web siteleri kullanıcıların istekleri doğrultusunda bağlandıkları yerlerdir. kullanıcılar isterlerse bir web sitesine bağlanmayabilirler. bu güçleri ve imkanları mevcuttur. bir kullanıcı bir siteye bağlanmak istiyorsa bu onun tercihi ve hakkıdır. bağlanmak istemiyorsa bu yine onun tercihi ve hakkıdır. halkın kendisine hizmet etmesi için görevlendirdiği kurumlar hadlerini aşıp halka neye ulaşıp ulaşmayacağını bilmeyen cahil cühela muamelesi edemezler. ebeveynlerin çocuklarını sakıncalı içeriklerden koruması için çok sayıda bedava ve ücretli yazılım mevcuttur. bu yazılımlar bir web tarayıcısını kullanmaktan daha karmaşık teknik bilgi gerektirmemektedir. devletin milletini küçük düşürmesi ve ebleh yerine koyması yasaktır. Skimlinks ile linkler üzerinden yönlendirme payı alınmaktadır.