folder Tahribat.com Forumları
linefolder C - C++
linefolder Pointer'lar Ne İşe Yarar Ve Ne Gibi Faydalar Sağlar.



Pointer'lar Ne İşe Yarar Ve Ne Gibi Faydalar Sağlar.

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    sokoban
    sokoban's avatar
    Kayıt Tarihi: 23/Ocak/2010
    Erkek

    Forumda arama yaptım çok eski bir konu var ondada çok detaya inilmemiş yüzeysel bilgiler var.Bu pointerların tam olarak kullanım amacı nedir / nasıl kullanılır , efektif olarak nasıl kullanabiliriz.C++ altına açtım konuyu ama ben bunları php'de kullanacağım daha çok.


    .
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Lathedarkman
    Lathedarkman's avatar
    Kayıt Tarihi: 05/Mayıs/2007
    Erkek

    faydası daha az hafıza tüketimi yapar program.

  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Elif - Efe
    rakkoc
    rakkoc's avatar
    Kayıt Tarihi: 19/Aralık/2003
    Homo

    pointerlar (turkceye isaretliyici olarak geciyordu sanirim) C# daki referans etme ile ayni sekilde kullaniliyordu C++ da; obje gonderiminde basina * koyuyorduk galba (yoksa delphidemiydi oyle hatirlamiyorum en son lisede kullandim bunlari)

    kullanim mantigi bir objenin bir fonksiona yada classa yollanmasi yerine onun bellekte bulundugu yerin yollanmasi sekildedir. bu sayede 2 tane avantaj elde etmis oluruz.

    1. avantajimiz fonksiona referans ile yada point ile yolladigimiz nesne de yaptigimiz degisiklikler return aldiktan sonra ki programda devam eden kisimde aynen gecerlidir

    turkcem cok iyi olmadigindan biraz devrik oldu ama soyle ornek vereyim bir degiskene elma yazdin bunu pointer ile yolladigin bir fonksionda armut yaptin sonra ana program dondugunde armut kalacaktir; ama direk yollarsan o fonksion icin ramde yeni bir yer acili (elma clonelanir) yeni acilmis yerde islem yapili (clone uzerinde) sonra program kaldigi yerden devam ederken eski (ilk atanmis elma) uzerinden calismaya devam edilir. Paremetreler den return almaya yaramis oldu bu avantajda

     

    2. avantajida ram kullanimi illk avantajin icinde dedigim gibi direk kullanimda Ram de yeni alan acilacaktir; bu alan ram kullanimi artirimi yapacak.

     

    2. olan tabiki avantaj ama 1. her zaman avantaj degildir.

     


    Bu aralar fazla yogunum. Unuttugum seyler oluyorsa affola. DM vs atın.
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    sacrifice
    sacrifice's avatar
    Kayıt Tarihi: 25/Ağustos/2005
    Erkek

    fiziksel belleğin isletim sistemi tarafindan referanslanmis hucrelerine direk erisimdir.

    Bazen hafizadan kazanmak adina kullanılabilir.

    Ornegin c familyasında fonksiyonlara parametre girdiginde aynı parametreler hafızada duplicate olur.

    Bunu engellemek icin kullanabilirsin. Bunun dısında "dynamic processing" mutlaka bunların vasıtasıyla olur.

    Java'da pointer yerine daha guvenle kullanabilecegin referans kavrami vardir. Perl'de her ikisi birden fln...


    #Coding Sacrifice Perl FSO#
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Jubei
    Jubei's avatar
    Kayıt Tarihi: 09/Mart/2008
    Erkek

    Pointer diye görünce bende hemen bildiklerimi yazayım dedim ama meğerse benim bildiğim pointer senin bildiğin pointer ile uymuyormuş :)) 

  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    sokoban
    sokoban's avatar
    Kayıt Tarihi: 23/Ocak/2010
    Erkek

    Jubei bunu yazdı:
    -----------------------------

    Pointer diye görünce bende hemen bildiklerimi yazayım dedim ama meğerse benim bildiğim pointer senin bildiğin pointer ile uymuyormuş :)) 


    -----------------------------

    Senin pointer'ıda yaz aga bişey olmaz herkese kapımız açık :F


    .
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Jubei
    Jubei's avatar
    Kayıt Tarihi: 09/Mart/2008
    Erkek

    sokoban bunu yazdı:
    -----------------------------

    Jubei bunu yazdı:
    -----------------------------

    Pointer diye görünce bende hemen bildiklerimi yazayım dedim ama meğerse benim bildiğim pointer senin bildiğin pointer ile uymuyormuş :)) 


    -----------------------------

     

    Senin pointer'ıda yaz aga bişey olmaz herkese kapımız açık :F


    -----------------------------

    Eyvallallh sağolasın,Benim bildiğim ve daha önce kullandığım pointer şudur,doğuda askerlik yapanlar bilir G3 ucuna takılır,çıplak gözle görülmez ve sadece gece görüş ile görünür laser pointer diye geçer nokta göstermek içindir.
    Ben demiştim sana benim bildiğim pointer ile senin bildiğin pointer uymuyor diye ama olsun en azından benim bildiğim pointer,i bilmiyenler öğrenmiş oldu :))
    (Bu arada çalışmanda allah kolaylık versin)

  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    bilmece
    bilmece's avatar
    Kayıt Tarihi: 29/Aralık/2009
    Erkek

    biçok yerde kolaylık sağlar

    char dizi[200],*p;
    p=dizi;
    for(int i=0;i<5;++i)
    {
     strcpy(p,"Merhaba Dunya ");
     p+=(strlen(p));
    }
    printf("%s",dizi);

  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Hannibal_King
    Hannibal_King's avatar
    Kayıt Tarihi: 22/Ağustos/2010
    Erkek

    pointer

     

    Pointerlar yani türkçe olarak göstericiler adres kavramıyla ilgili bir konu.Nesnemizin nasıl değeri,türü,bilinirlik alanı(scope),ömrü varsa adreside vardır.Adres bize nesnenin bellekte bulunduğu yeri gösterir.İçinde adres tutan değişkenlere pointer diyoruz.

     

    Resimde p bir pointer x de bir değişken.p  int * türden bir pointer (int yıldız diye okuyabiliriz.) x int türden bir değişken.x double türden olsaydı pointer da double yıldız türünden diyecektim.x in içinde 30 var diyelim.x in sag üstündeki 1FF4 x in adresi olsun diye salladım.simdi ordaki p x in adresini içinde tutuyo.

     

    *     içerik operatoru

    &     adres operatoru

     

    *p dediğim zaman p ye bakıyorum içinde ne var 1FF4 var yani x in adresi yani x in kendisi resme göre *p nin değeri 30 dur.

    * görünce içine bak gibi düşünebiliriz.

     

    &x dersemde x in adresini göstermiş olurum &x in degeri = 1FF4

     

    #include

     

    int main()

    {

        int x;      // int türden bir değişken yarattım  x in türü int

        int *p;       //  int yıldız türden bir pointer yarattım   p nin türü int* (int yıldız)

     

        p = &x;      // x in adresini p nin içine koydum

        *p = 50;      // *p ye 50 atadım p nin içinde x in adresi oldugu için x e atamıs oldum

     

        printf("x = %d\n", x);  // ekrana 50 yazıcak

     

        return 0;

     

    }

     

    pointer konusu cok ayrıntılıdır tabikide kısaca ne olduğunu anlatmaya calıstım özetle içinde adres tutan değişken.

  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    DrKill
    DrKill's avatar
    Kayıt Tarihi: 10/Mart/2004
    Erkek

    C++ için basit kısa geçeyim....

     

    Öncelikle pointer değişkenler int değişkenlerde farksızdır. Yani int değişken ne tutar? Tamsayı!!!!

    Pointer değişkenlerde tamsayı tutar. Yani int bir değişkendir aslında. Ama farkı şudur. Pointer değişkenlerin tuttuğu sayılar önemlidir. Bu sayılar belleğin hücrelerinden birini temsil eder. (Genel bellek şemasını düşün her bellek hücresi 1 bytedır ve her byte ın kullanımı için o hücrenin sayısal bir adresi vardır.)

     

    int x=1;
    int *ptr;

    diyelim.

    normalde x 4 byte bellekte yer kaplayan değişken olduğunu biliyoruz (32 bit bir derleyici ve işletim sisteminde)

    Yani x bellekte 4 tane hücre kaplıyor.

    00000000 (1. hücre Adresi:2DFFD1)
    00000000 (2. hücre Adresi:2DFFD2)
    00000000 (3. hücre Adresi:2DFFD3)
    00000001 (4. hücre Adresi:2DFFD4)

    ptr=&x;

    dediğimiz zaman derleyici x'in 1. hücresinin adresini ptr değişkenine atıyor.
    Yani ptr değişkenin içeriği 2DFFD1 oluyor (Sayıları sallıyorum mantık arama. 16 tabanındaki sayı sistemine göre söylüyorum.)

    cout << ptr; // dediğin zaman 2DFFD1 sayısını görürsün..
    cout << *ptr; // dediğin zaman ekrana x in değeri olan 1 yazdırır.

    pointer değişkenlerin tek farkı *ptr gibi bir biçimde kullanıyor olmamız

    *ptr=3 dediğimiz zaman derleyici şunu yapıyor...

    ptr değişkenin içeriğindeki 2DFFD1 (yani x in 1. hücresi) adresinden itibaren toplam 4 byte boyunca (4 hücre boyunca) ki boyuta 3 yaz diyor. (peki neden 4 byte yani ptr sadece adres taşıyor? çünkü her pointer değişkenin hangi tip değişkeni tutacağını zaten başta belirtiyorsun. INT *ptr; dediğinde zaten int bir değişkende işlem yapacağım, 4 byte üzerinde işlem yapacağım diyorsun.)

    Yani şu oluyor

    00000000 (1. hücre Adresi:2DFFD1)
    00000000 (2. hücre Adresi:2DFFD2)
    00000000 (3. hücre Adresi:2DFFD3)
    00000011 (4. hücre Adresi:2DFFD4)

     

    Olay budur. pointer kavramını anlaman için çok örnek çözmen gerekli. pointerın pointer ı pointer referansları, void pointer hepsi ayrı bir örnektir. Hepsini denemen gerek mantığını kavraman için. Ama basit bir konudur.


    Bu imzayı her gördüğünüzde 4gb kotanızın 0,00000358559191226959228515625 azalmaktadır. Bilerek ve istenerek bu imza yapılmıştır. Amaç kotanızı sömürmektir
  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ltcelik
    ltcelik's avatar
    Kayıt Tarihi: 11/Mayıs/2007
    Erkek

    Bir nevi posta kutusudur.. Posta kutusu şeklinde bir değişkendir.. Diğer değişkenlerin bellek adreslerini tutarlar..

    örneğin "k " diye tam sayı  bir değişkenimiz olsun... derleyici bu "k" için bellekte bir yer ayırır.. fakat bu belleğin adresi nedir?

    bunu için bir adres saklayan başka bir değiken tanımlayabiliyoruz bu da "a" olsun..

    bunu bildiriken

    int *a;  // diyoruz.. yani "a bir tam sayı değişkeninin bellek adresini tutar" diyoruz..

    sonra "k" nın adresini a ya yüklemek için de

     a=&k   //deyimini kullanyoruz

    cout<

    dediğimizde 00ff1212 gibi bir adres çıktısı alaırız [k nın adresi]

    ancak

    cout<<*a;

    dediğimizde a da hengi değişkenin adresi tutuluyorsa onun "değeri" basılır..

    örneğimizde k nın değeri 10 olsaydı 10 , 20 olsaydı 20 [k değişkeninin o an taşıdığı , sahip olduğu değer}

    eğer

    *a=50; dersek adresteki değeri yani bu örneğimizde k yı 50 yapmış oluruz [ hangi değişkenin adresini tutuyorsa direk adrese teslim yükleme ]

    edit

    şurdaki ördek güzel

    http://www.ceviz.net/c-da-pointer-kavrami_a754.html


    Din Kitaplarını Okuyup Anlayana Ateist, Okuyup Anlamayanlara "dindar" denir... Nikola TESLA.. ben mi? Ne okurum ne anlarım... Kendi kendime de uyuz oluyorum ama olamıyorum.. "Ama efsaneyi çıkarıp atarsan ve yaptıkları eylemlere bakarsan... ..Jedi'ların mirası başarısızlıktır. İkiyüzlülüktür, kibirdir."
Toplam Hit: 6780 Toplam Mesaj: 13